谁能弄清楚以下语句如何计算为 7?
回声 (int)( (0.1+0.7)*10 );
我正在尝试 PHP 中的运算符优先级。因此,如果有人可以提供帮助,将不胜感激。
如果您删除该(int)
部分,并改为运行以下代码:
echo number_format(((0.1+0.7)*10), 20);
输出将是7.99999999999999911182
. 解析为整数的该值将得到 7,因为将值解析为整数将始终对该值下限。阅读以下文章应该让您了解这里发生了什么。
简而言之,双精度值始终是二进制值,并且通过它是“2^n 的乘积”,以最接近您所说的十进制的为准。并且使用 2^n 你没有任何机会恰好达到0.1。