1

任何人都可以帮我解释以下内容吗?您可以在 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

其他看似正确的数字也会出现类似的行为。

提前致谢!

4

2 回答 2

4

您正在查看四舍五入的值。在内部,数字不是 1089.84,而是类似于 1089.84000026。

如果您想要“正确”的值,请将两边乘以 100,加上 0.5,然后 (int) 它们,然后取整数 mod,并将结果转换回浮点数。

于 2011-07-29T12:26:41.203 回答
3

实际上,0.04 进入 1089.84,没有余数。但是,这不是您要求计算机为您执行的计算。

1089.84 和 0.04 都不能表示为浮点数。因此,每个双精度文字都被四舍五入到最接近的可表示值。您实际计算的是:

1089.839999999999918145476840436458587646484375 % 0.040000000000000000832667268468867405317723751068115234375

这正是

0.039999999999895459457111002166129765100777149200439453125

当您打印结果时,它会被四舍五入到小数点后显示,因此您会看到 0.04。

于 2011-08-01T00:01:46.147 回答