我在书中找到了某个地方
echo (int) ((0.1 + 0.7) * 10);
Run Code Online (Sandbox Code Playgroud)
输出是:7
echo ((0.1 + 0.7) * 10);
Run Code Online (Sandbox Code Playgroud)
输出:8
为什么两者都不同?我认为答案应该是8
当你写作
echo ((0.1 + 0.7) * 10);
Run Code Online (Sandbox Code Playgroud)
这个简单算术表达式的结果在内部存储为7.999999而不是8.
现在当值转换为int时,
echo (int) ((0.1 + 0.7) * 10); // 7.999999 when typecasted to int becomes 7
Run Code Online (Sandbox Code Playgroud)
PHP只是截断小数部分,导致相当大的误差(确切地说是12.5%).
| 归档时间: |
|
| 查看次数: |
135 次 |
| 最近记录: |