2015-06-03 5 views
0

Является ли это ошибкой или некоторой математикой, которую я не понимаю?PHP ошибка округления точности?

round(58.900662, 2) => 58.9 

Где находится последний ноль?

EDIT: На мой взгляд, в документации отсутствует информация.

Следующий код делает, как ожидается,

number_format(round(58.900662, 2), 2) => 58.90 
+0

возможно дубликат [Как я округлить в PHP с сохраняя два нули] (http://stackoverflow.com/questions/7493305/how-do-i-round-in-php-with-keeping-the-two-zeros) – Sean

+2

Кто сказал .90 и .9 отличаются вещи? –

ответ

2

round позаботится о точности, если эта цифра не 0, поскольку последний 0 не имеет никакого эффекта при любой математической операции.

Если число 1.569 то round вернется 1.57

Если вы хотите, чтобы 0 вы можете использовать -

number_format(58.900662, 2, '.', ','); 

number_format()

+0

Да, это то, что им, по-видимому, необходимо –

+0

Это должно быть указано в документации. Если я явно установил прецессию в два, тогда я хочу два числа после запятой. – user3332631

+0

* 2 номер после запятой. *? –

1

Вы сказали, это округлить его до 2-го знака после запятой, которое будет 58.90. Однако 58,90 можно упростить до 58,9. Это же число.

Если вы хотите принудительно отобразить два десятичных знака, вы можете использовать функцию number_format() PHP.

Смежные вопросы