PHP round函数返回了一个奇怪的结果

时间:2014-11-27 10:26:21

标签: php rounding

我只是在CGI中执行一个简单的脚本round(8.32, 1),然后它返回8.300000000000001。但是当我在CLI中使用php -r "echo round(8.32, 1);"执行它时,结果是8.3,这是我所期望的。我的PHP版本是5.6.2。

2 个答案:

答案 0 :(得分:2)

您的配置中有precision的不同设置。

ini_set('precision', 10); var_dump(round(8.32, 1)); // double(8.3)

ini_set('precision', 20); var_dump(round(8.32, 1)); // double(8.3000000000000007105)

为什么会发生这种情况你可以在这里阅读:http://en.wikipedia.org/wiki/IEEE_floating_point

答案 1 :(得分:0)

round()会返回float,这是一个近似值,根据您的显示方式,它可能会显示舍入错误。

您应该使用number_format(),它会返回一个字符串。

echo number_format(8.32, 1);