可能重复:
为什么“for( i = 0.1 ; i != 1.0 ; i += 0.1)” 不会在 i = 1.0 处中断?
我有一个数字(实数)区间 [x, y]。我必须使用类似的东西遍历它:
nr = 0;
for (i = x; i <= y; i += step) //step is a small double value
nr++;
对于步长为 0.001 的 [-1, 1],很明显 nr 应该是 2001(-1.000 ... 0.999 1.000),但是它计算出 nr = 2000(我进行了调查,但最后一次比较失败:0.999 + 0.001 > 1.000)
如何计算准确的 nr 值?