乘法顺序更改结果。为什么?

时间:2017-05-01 13:25:49

标签: floating-point fortran multiplication rounding-error mantissa

我们正在尝试使用浮点数并在Fortran中找到了一个程序,我们无法弄清楚会发生什么。

program test
a=0.1
print*, a * .1 * 10.
print*, .1 * a * 10.
print*, .1 * 10. * a
end program test

问题:为什么会产生不同的结果?

0.100000009  
0.100000009  
0.100000001

我们认为它可能与浮动数字的表示模型(尾数,指数,...)以及计算机如何对数字进行舍入有关,但我们不确定。

有人可以详细解释这是如何运作的吗?

0 个答案:

没有答案