Как правильно отформатировать это число с помощью PHP? - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть число с числами после десятичной дроби, но по какой-то причине при форматировании последние две десятичные дроби всегда равны нулю.

Например, в моей базе данных сохранена цена 154,95, но яхотел бы, чтобы число 150 отображалось как 150,00.Итак, я посмотрел на number_format () и нашел эту информацию:

number
The number being formatted.

decimals
Sets the number of decimal points.

dec_point
Sets the separator for the decimal point.

thousands_sep
Sets the thousands separator.

С вышеупомянутой информацией я сделал это:

echo number_format($artikel['prijs'],2,",",".");

Запятая должна быть десятичным разделителем и точкой разделителем тысяч,Тем не менее, результат 154,95 с кодом выше равен 154,00, почему?

Я хочу, чтобы все числа имели одинаковый формат, число с двумя десятичными знаками после запятой, если они равны нулю или более.

Ответы [ 3 ]

0 голосов
/ 14 февраля 2019

Измените введенный формат числа.

<?php
echo number_format("1000000")."<br>";
echo number_format("1000000",2)."<br>";
echo number_format("1000000",2,",",".");
?>

Вывод: -

1,000,000
1,000,000.00
1.000.000,00
0 голосов
/ 14 февраля 2019

Это округляет ваш номер до ближайшего кратного 10:

$n = 123.45;

$multiple = 10;

$result = (ceil($n)%$multiple === 0) ? ceil($n) : round(($n+$multiple/2)/$multiple)*$multiple;

echo $result;

Затем number_format() преобразует его в строку для отображения с разделителями (,.).В разных местах у них есть запятая для разделения десятичных дробей и остановка для разделения тысяч и наоборот в других местах, поэтому я обычно пропускаю эти параметры, так как они в любом случае являются необязательными, и я думаю, что они могут измениться в зависимости от настроек локали на машине, просматривающей еено я не уверен в этом.

Поэтому я бы добавил:

$display_result = number_format($result,2);
0 голосов
/ 14 февраля 2019

Проблема в том, что сначала цена "154,95" преобразуется в число как 154, а после этого number_format () начинает выполнять свою работу.Либо вам нужно сохранить в базе данных цену 154,95, либо вы должны заменить символ "," на "."перед вызовом number_format ().Пример:

<?php
$a = "159.95";
$b = "12345";
$a_number = str_replace(",", ".", $a);
$b_number = str_replace(",", ".", $b);

echo number_format($a_number,2,",","."), "\n";
echo number_format($b_number,2,",","."), "\n";
?>

И вывод:

159,95

12.345,00

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