有人可以帮我解释一下吗?您可以在Google中输入相同的数字,并获得与我在代码中获得的相同结果....
1089.80 % 0.04 = 0
1089.84 % 0.04 = 0.04 - Surely this is wrong? 0.04 goes into 1089.84 with no remainder.
1089.88 % 0.04 = 0
1089.92 % 0.04 = 0
对于看似正确的其他数字,也会出现类似的行为。
提前致谢!
答案 0 :(得分:4)
您正在查看舍入值。在内部,这个数字不是1089.84,而是像1089.84000026。
如果你想要“正确”值,将两边乘以100,加0.5和(int)它们,然后取整数mod,并将结果转换回浮点数。
答案 1 :(得分:3)
实际上,0.04进入1089.84而没有余数。但是,这不是您要求计算机为您执行的计算。
1089.84和0.04都不能表示为浮点数。因此,每个双精度文字都四舍五入到最接近的可表示值。你实际在计算的是:
1089.839999999999918145476840436458587646484375 % 0.040000000000000000832667268468867405317723751068115234375
正是
0.039999999999895459457111002166129765100777149200439453125
当你打印结果时,它会被舍入到几个小数位以供显示,所以你看到0.04。