【发布时间】:2011-06-25 10:23:37
【问题描述】:
有两个类似的matlab程序,一个迭代10次,另一个迭代11次。
一个:
i = 0;
x = 0.0;
h = 0.1;
while x < 1.0
i = i + 1;
x = i * h;
disp([i,x]);
end
另一个:
i = 0;
x = 0.0;
h = 0.1;
while x < 1.0
i = i + 1;
x = x + h;
disp([i,x]);
end
我不明白为什么浮点加法和倍数有区别。
【问题讨论】:
-
这可能是由于变量 x 中的 fp 表示。因此,在最后一种情况下,x 可能略小于 1,因为总和的误差传播更大。实际输出是多少?您看到的最后一个 x 值是哪个?
-
@Howard 前者的x值为1,后者的x值为1.1。
-
@Cook 尝试输出
x-1而不是x本身。然后您应该会看到不同之处(请参阅下面我的答案中的示例)。 -
我打算链接到 (Goldberg 1991),然后发现:floating-point-gui.de
标签: matlab floating-point