【发布时间】:2014-03-13 07:51:40
【问题描述】:
当 dt*j 是整数时,我试图使用 Matlab 解决一些问题并存储结果, 使用以下代码。
j=1;
dt = 1E-05;
a=[];
while dt*j <=20
if mod(dt*j,1) ==0
a=[a;[dt*j,j]];
end
j=j+1;
end
但是 Matlab 给我的结果不正确。一些整数(3、6、7、11 等)缺失,如下所示。
a =
1 100000
2 200000
4 400000
5 500000
8 800000
9 900000
10 1000000
16 1600000
17 1700000
18 1800000
19 1900000
20 2000000
我再次尝试使用 dt=1E-4 并给出了正确的结果。谁能告诉我这里发生了什么?谢谢。
【问题讨论】:
-
浮点精度错误的另一个例子。 It
s notmod` 错了,dt*j不是预期值。 -
yes, dt*300000==3 ans = 0 but dt*400000==4, ans = 1 我很困惑,因为只有一些数字丢失,但我想这与计算机存储数字的方式有关
-
这是一个浮点运算的问题。有一些问题:docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html
标签: matlab