0

谁能弄清楚以下语句如何计算为 7?

回声 (int)( (0.1+0.7)*10 );

我正在尝试 PHP 中的运算符优先级。因此,如果有人可以提供帮助,将不胜感激。

4

1 回答 1

3

如果您删除该(int)部分,并改为运行以下代码:

echo number_format(((0.1+0.7)*10), 20);

输出将是7.99999999999999911182. 解析为整数的该值将得到 7,因为将值解析为整数将始终对该值下限。阅读以下文章应该让您了解这里发生了什么。

简而言之,双精度值始终是二进制值,并且通过它是“2^n 的乘积”,以最接近您所说的十进制的为准。并且使用 2^n 你没有任何机会恰好达到0.1。

于 2013-08-14T17:28:56.860 回答