任何人都可以帮我解释以下内容吗?您可以在 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
其他看似正确的数字也会出现类似的行为。
提前致谢!
任何人都可以帮我解释以下内容吗?您可以在 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
其他看似正确的数字也会出现类似的行为。
提前致谢!
您正在查看四舍五入的值。在内部,数字不是 1089.84,而是类似于 1089.84000026。
如果您想要“正确”的值,请将两边乘以 100,加上 0.5,然后 (int) 它们,然后取整数 mod,并将结果转换回浮点数。
实际上,0.04 进入 1089.84,没有余数。但是,这不是您要求计算机为您执行的计算。
1089.84 和 0.04 都不能表示为浮点数。因此,每个双精度文字都被四舍五入到最接近的可表示值。您实际计算的是:
1089.839999999999918145476840436458587646484375 % 0.040000000000000000832667268468867405317723751068115234375
这正是
0.039999999999895459457111002166129765100777149200439453125
当您打印结果时,它会被四舍五入到小数点后显示,因此您会看到 0.04。