matlab - 如何停止matlab截断长数字

标签 matlab

这两个长号除了最后一位外是一样的。

测试 = []; 测试(1)= 33777100285870080; 测试(2) = 33777100285870082;

但是当数字被放入数组时,最后一位数字丢失了:

unique(test)

ans = 3.3777e+16

我该如何防止这种情况发生?这些数字是 ID 代码,丢失最后一位数字会搞砸一切。

最佳答案

默认情况下,Matlab 对数字使用 64 位浮点表示法。它们具有以 10 为底的 16 位精度(或多或少),而您的数字似乎超过了该精度。

使用像 uint64 这样的东西存储您的号码:

> test = [uint64(33777100285870080); uint64(33777100285870082)];
> disp(test(1));
   33777100285870080
> disp(test(2));
   33777100285870082

这确实是一个舍入错误,而不是显示错误。要获得用于输出目的的正确字符串,请使用 int2str ,因为 num2str 使用 64 位浮点表示,并且在这种情况下存在舍入误差。

关于matlab - 如何停止matlab截断长数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26038735/

相关文章:

matlab - 优化matlab for循环

matlab - 使用 Matlab 有效地为我的猫模拟激光指示器

matlab - 寻找对 MATLAB methods() 函数未记录使用的深入了解

arrays - 无需评估即可动态创建结构数组

Matlab:保存时图形标签消失

matlab - 如何在matlab中分别控制耳机左右声道在matlab中播放音频信号?

c++ - MATLAB libpointer 数组

matlab - 不区分大小写 'ismember' 在 MATLAB 中使用

oop - Matlab相当于调用内部静态类

image - 在Matlab中应用变换后如何保持初始图像大小?