我们目前正在试验浮点数,并遇到了 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
我们认为这可能与浮点数(尾数、指数等)的表示模型以及计算机如何对数字进行四舍五入有关,但我们不确定。
有人可以详细解释这是如何工作的吗?