Я просто выполняю простой скрипт round(8.32, 1)
в CGI возвращается 8.300000000000001. Но когда я выполняю это в CLI с php -r "echo round(8.32, 1);"
, результат 8,3, который я ожидал. Моя версия PHP 5.6.2.
У вас есть разные настройки точность в вашем конфиге.
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
round()
возвращает float
, который является приблизительным, и в зависимости от того, как вы отображаете, может отображаться ошибка округления.
Вы должны использовать number_format()
, который возвращает строку.
echo number_format(8.32, 1);