Я делаю свою php-работу на своем компьютере разработчика, где у меня есть элементарная настройка LAMP. Когда я смотрю на свой веб-сайт в своем домашнем ящике, любые отображаемые мной числа автоматически обрезаются с наименьшей необходимой точностью. Например, 2 отражено как 2, 2.2000 отражено как 2.2.
На производственной коробке все числа отражены по крайней мере с одним ненужным нулем, например, 100 становится 100.0. На обоих боксах версия PHP 5.2.5. Кто-нибудь знает, если есть настройка, которую я могу изменить, которая заставит PHP автоматически удалять ненужные нули? Я не хочу идти в каждое место моего кода, где я вывожу число и заменяю echo на 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 и некоторых других боксах
Просто чтобы исключить другие возможные причины: откуда приходят цифры? Делает ли это это с буквальными значениями?
Маловероятно, что одна только установка точности могла вызвать это. Проверьте также, может ли что-либо мешать выводу через такие вещи, как auto_prepend_file
или output_handler
.
Вы должны использовать команду round (), чтобы всегда округлять требуемую точность, иначе однажды вы получите что-то вроде 2.2000000000123 из-за арифметики типа float.
спасибо за ответы на все вопросы - решением было привести возвращаемое значение метода, ответственного за float. То есть делал
return someNumber.' grams';
Я просто изменил это на
return (float)someNumber.' grams';
затем PHP обрезал любые конечные нули, когда это необходимо.
Может кто-нибудь закрыть это?
Попробуйте встроенную функцию 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
?>