可能的重复:
PHP float 到 int 类型转换的意外结果 https://stackoverflow.com/questions/3385685/php-unexpected-result-of-float-to-int-type-cast
int((0.1+0.7)*10) = 7 在多种语言中。如何防止这种情况发生? https://stackoverflow.com/questions/6439140/int0-10-710-7-in-several-languages-how-to-prevent-this
有人能给我解释一下吗???
<?php
echo (int) ((0.1 + 0.7)*10);//displays an output: `7`
?>
我期待看到8
但我得到了7
- 请解释一下这种行为。
这是一个特殊功能吗PHP
?或者我不明白其中的整数类型PHP
?
Thanks.
这个问题在PHP手册 http://www.php.net/manual/en/language.types.float.php#warn.float-precision:
此外,有理数可以精确地表示为
以 10 为基数的浮点数,如 0.1 或 0.7,没有
精确表示为以 2 为基数的浮点数,即
内部使用,无论尾数的大小。因此,他们
如果没有一个,就无法转换为其内部二进制对应物
精度损失小。这可能会导致令人困惑的结果:
例如,floor((0.1+0.7)*10) 通常会返回 7 而不是
预期为 8,因为内部表示类似于
7.9999999999999991118....
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)