为什么设置'precision'会破坏php round()?

时间:2017-04-25 00:55:39

标签: php precision

最近遇到的情况是我在一台服务器上工作,该服务器的php.ini文件包含:

precision = 16

默认为14,这似乎无害。不幸的是它导致了这个:

// ini_set('precision', 16);
echo round((20.12 / 36.79),4);

结果: 0.5469000000000001

咦? round()不应该在这里处理浮点精度问题吗?

1 个答案:

答案 0 :(得分:1)

php的round()函数仍然返回浮点数,而不是字符串,所以它可能不准确。

0.5469表示为以下8个字节0x3FE180346DC5D639编码的双精度IEEE754。

这不是0.5469的确切表示,而是最接近的代表性数字,实际上是5.46900000000000052757798130187E-1

参考文献: