Количество десятичных знаков по умолчанию для вывода в PHP - PullRequest
2 голосов
/ 10 декабря 2008

Я делаю свою php-работу на своем компьютере разработчика, где у меня есть элементарные настройки LAMP. Когда я смотрю на свой веб-сайт в своем домашнем ящике, любые отображаемые мной числа автоматически обрезаются с наименьшей необходимой точностью. Например, 2 отражено как 2, 2.2000 отражено как 2.2.

В производственной ячейке все числа отражены как минимум с одним ненужным нулем, например, 100 становится 100.0. В обоих случаях версия PHP - 5.2.5. Кто-нибудь знает, если есть возможность изменить настройку, которая заставит PHP автоматически удалять ненужные нули? Я не хочу идти в каждое место моего кода, где я выводил число и заменял echo на printf или что-то в этом роде.

Muchas gracias.

Ответы [ 6 ]

5 голосов
/ 10 декабря 2008

И когда вы не можете полагаться на конфигурацию 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 и некоторых других окнах

3 голосов
/ 10 декабря 2008

Быстрый просмотр доступных настроек INI заставляет меня думать, что ваши точность значения отличаются?

2 голосов
/ 11 декабря 2008

спасибо за все ответы - решением было привести возвращаемое значение метода, ответственного за float. То есть это делало

return someNumber.' grams';

Я просто изменил его на

return (float)someNumber.' grams';

затем PHP обрезал любые завершающие нули, когда это необходимо.

Может кто-нибудь закрыть это?

0 голосов
/ 01 декабря 2011

Попробуйте встроенную функцию 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
?>
0 голосов
/ 10 декабря 2008

Вы должны использовать команду round (), чтобы всегда округлять необходимую точность, иначе однажды вы получите что-то вроде 2.2000000000123 из-за арифметики типа float.

0 голосов
/ 10 декабря 2008

Просто чтобы исключить другие возможные причины: откуда приходят цифры? Делает ли это это с литеральными значениями?

Маловероятно, что одни только настройки точности могут вызвать это. Проверьте также, может ли что-либо мешать выводу через такие вещи, как auto_prepend_file или output_handler.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...