PHP表达式输出

Sau*_*tel 1 php

我在书中找到了某个地方

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

Obj*_*tor 6

当你写作

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%).