Как правильно округлить строку PHP до двух десятичных знаков?
$number = "520"; // It's a string from a database
$formatted_number = round_to_2dp($number);
echo $formatted_number;
Выход должен быть 520.00
;
Каким должно round_to_2dp()
быть определение функции?
php
formatting
numbers
rounding
number-formatting
Рич Брэдшоу
источник
источник
round
это математическая функция, и это просто проблема форматирования.Ответы:
Вы можете использовать number_format () :
Пример:
Эта функция возвращает строку .
источник
round
не решает проблему ОП здесь.round("520", 2)
возвращает число с плавающей запятой520
и повторение, которое, конечно, не будет отображать его с точностью до 2 десятичных знаков Для целей ОП - показа целого числа до 2 десятичных знаков путем заполнения его конечными нулями - вам нужна функция форматирования чисел, а не функция округления.520,00
вместо этого520.00
, это просто работает.Используйте
round()
(используйте, если вы ожидаете число только в формате с плавающей запятой, иначе используйте number_format () в качестве ответа от Codemwnci ):Из руководства:
...
источник
round($number, 2);
не работает. Я хочу 520,00, а не 520. Не могу поверить, что раунд не делает этого по умолчанию.С другой стороны,
источник
520,00
? Я думаю, что другой ответ работает лучше в этом случае.http://php.net/manual/en/function.round.php
например
источник
Пытаться:
Выход будет:
источник
Вы можете использовать PHP
printf
илиsprintf
функции:Пример с
sprintf
:Вы можете запустить то же самое без
echo
так же. Пример:sprintf("%.3f", $num);
Вывод:
В качестве альтернативы, с
printf
:Вывод:
источник
Другим более экзотическим способом решения этой проблемы является использование
bcadd()
фиктивного значения для $ right_operand of0
.источник
bc*
функции не округляются вверх, они всегда округляются вниз. Например,bcadd("1.0999","0.0",1)
выдает «1.0», а не «1.1».$scale
дробных цифрах. Это равно округлению до нуля.Используйте PHP number_format ()функцию .
Например,
Выход будет:
источник
Используйте функцию PHP number_format () .
источник
Это будет отображать ровно две цифры после десятичной точки.
Преимущество:
Если вы хотите отображать две цифры только после значения с плавающей запятой, а не для int, используйте это.
источник
round_to_2dp
является определяемой пользователем функцией, и ничего нельзя сделать, если вы не опубликовали объявление этой функции.Тем не менее, я думаю, что делает это:
number_format($number, 2);
источник
round_to_2dp($number);
имел в виду псевдокод; ОП просил кого-то сказать ему, чем заменить это выражение.Округление правильно округляет число, и sprintf принудительно округляет его до 2 десятичных разрядов, если после округления оно составляет всего 1 десятичный знак.
источник
Он вернет 5.98 без округления числа.
источник
floor($retailPrice * 100) / 100;
без необходимости числового формата.Для условного округления т.е. показать десятичное число, где это действительно нужно, иначе целое число
123,56 => 12,56
123,00 => 123
источник
Я делаю свое.
источник
Здесь я получаю два знака после
.
(точки), используя функцию ...Результаты от вышеупомянутой функции:
Новый правильный ответ
Используйте нативную функцию PHP bcdiv
источник
Это даст вам 2 числа после десятичного числа.
источник
Если вы хотите использовать две десятичные цифры во всем вашем проекте, вы можете определить:
Тогда следующая функция выдаст желаемый результат:
Но если вы не используете функцию bcscale, вам нужно написать следующий код, чтобы получить желаемый результат.
Знать больше
BC Math Functions
bcscale
источник
Номер без тура
источник
Вот еще одно решение с помощью strtok и str_pad :
источник
Добавление к другим ответам, так как number_format (), по умолчанию, добавит разделитель тысяч.
Чтобы удалить это, сделайте это:
источник
Примеры
источник
Вы можете использовать PHP round () .
источник