2014-11-27 3 views
1

Я просто выполнил простой скрипт round(8.32, 1) в CGI, затем он возвращает 8.300000000000001. Но когда я выполняю его в CLI с php -r "echo round(8.32, 1);", результат будет 8.3, который я ожидал. Моя версия PHP - 5.6.2.Функция PHP round возвратила странный результат

+0

Используйте 'number_format()', который возвращает строку. – Barmar

+0

Как вы выводите результат для версии CGI? – newman

ответ

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

0

round() возвращает float, который является приближенным, и в зависимости от того, как вы показываете это может показать ошибку округления.

Вы должны использовать number_format(), который возвращает строку.

echo number_format(8.32, 1); 
Смежные вопросы