3
回声 65.7 * 100 % 10 // 0

回声 65.6 * 100 % 10 // 9 <---

回声 6560 % 10 // 0

回声 65.5 * 100 % 10 // 0

有人可以解释为什么吗?

编辑:

对于人类或非程序员,结果 9 显然是错误的。

"error"编程时如何防止这种情况?

4

4 回答 4

4

因为65.6浮点数实际上是 的近似值65.6。它实际上略小于65.6,即65.5999或类似。

假设我对实际值的疯狂猜测是正确的,你有6559.9,它被模运算符剥离6599,然后除以 10 得到余数 9。

于 2012-11-12T07:30:23.723 回答
3

因为 65.6 * 100 是 6559.9999999999。

这对你来说是浮点数

于 2012-11-12T07:30:45.543 回答
2

如前所述,这与浮点运算有关。我推荐阅读每个计算机科学家应该知道的关于浮点运算的知识

于 2012-11-12T07:41:36.040 回答
1

因为:

<?php

echo (65.7 * 100 == 6570) ? "Equal" : "Not equal";  // Equal
echo (65.6 * 100 == 6560) ? "Equal" : "Not equal";  // NOT EQUAL !!
echo (65.5 * 100 == 6550) ? "Equal" : "Not equal";  // Equal

?>

65.6 * 100不是6560。这里的大红色警告框解释了原因。

于 2012-11-12T07:39:32.927 回答