Я делаю свою работу php в своем dev-блоке дома, где у меня есть рудиментарная настройка LAMP. Когда я смотрю на свой веб-сайт в своем домашнем ящике, любые числа, которые я эхо, автоматически усекаются до наименьшей требуемой точности. Например, 2 отражается как 2, 2.2000 отражается как 2.2.
В окне производства все числа отражены по крайней мере с одним ненужным нулем, например 100 становится 100,0. В обоих случаях версия PHP – 5.2.5. Кто-нибудь знает, если есть параметр, который я могу изменить, который заставит PHP автоматически удалить ненужные нули? Я не хочу, чтобы мне приходилось ко всем местам в моем коде, где я выводил число и заменял эхо с printf или что-то в этом роде.
Большое спасибо.
И когда вы не можете полагаться на конфигурацию PHP, не забудьте о number_format (), который вы можете использовать для определения того, как возвращается число, например:
// displays 3.14 as 3 and 4.00 as 4 print number_format($price, 0); // display 4 as 4.00 and 1234.56 as 1,234.56 aka money style print number_format($int, 2, ".", ",");
PS: и старайтесь избегать использования money_format (), поскольку он не будет работать в Windows и некоторых других ящиках
Быстрый просмотр доступных настроек INI позволяет мне изменить ваши значения точности ?
спасибо за все ответы – решение заключалось в том, чтобы вернуть возвращаемое значение метода, ответственного за float. Т.е. это делалось
return someNumber.' grams';
Я просто изменил его на
return (float)someNumber.' grams';
то при необходимости PHP усекал любые конечные нули.
Может кто-нибудь закрыть это?
Просто исключить другие возможные причины: Откуда берутся цифры? Делает ли это это с буквальными значениями?
Не похоже, что это может привести только к настройке точности. Проверьте также, может ли что-то мешать выходу через такие вещи, как auto_prepend_file
или output_handler
.
Вы должны использовать команду round () для округления нужной точности, иначе в какой-то день вы получите что-то вроде 2.2000000000123 из-за характера арифметики float.
Попробуйте встроенную функцию round
;
float round ( float $val [, int $precision = 0 [, int $mode = PHP_ROUND_HALF_UP ]] );
Возвращает округленное значение val до указанной точности (количество цифр после десятичной точки). точность также может быть отрицательной или нулевой (по умолчанию).
Примеры # 1 round ()
<?php echo round(3.4); // 3 echo round(3.5); // 4 echo round(3.6); // 4 echo round(3.6, 0); // 4 echo round(1.95583, 2); // 1.96 echo round(1241757, -3); // 1242000 echo round(5.045, 2); // 5.05 echo round(5.055, 2); // 5.06 ?>
Примеры примеров # 2
<?php echo round(9.5, 0, PHP_ROUND_HALF_UP); // 10 echo round(9.5, 0, PHP_ROUND_HALF_DOWN); // 9 echo round(9.5, 0, PHP_ROUND_HALF_EVEN); // 10 echo round(9.5, 0, PHP_ROUND_HALF_ODD); // 9 echo round(8.5, 0, PHP_ROUND_HALF_UP); // 9 echo round(8.5, 0, PHP_ROUND_HALF_DOWN); // 8 echo round(8.5, 0, PHP_ROUND_HALF_EVEN); // 8 echo round(8.5, 0, PHP_ROUND_HALF_ODD); // 9 ?>