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