#php #number-formatting
#php #форматирование чисел
Вопрос:
У меня есть эта строка :
000000000000100
и нужно преобразовать его в:
1,00
Итак, правила таковы:
- Разделите число на 100 и используйте запятую в качестве десятичного разделителя
- Вычеркните начальные нули
- Сохраняйте два десятичных знака
Комментарии:
1. Не могли бы вы уточнить свой вопрос? Вам нужно только одно число перед десятичным разделителем? Вам нужно больше 2 десятичных знаков, если они присутствуют? Например. должно
000000000001200
стать1,200
,1,20
или12,00
?2. Мне нужно только 2 числа после запятой!000000000001200 -> 12,00
3. Нам нужно знать, какими должны быть правила для преобразования. Одного примера недостаточно. Похоже, что это: (а) деление на 100; (б) удаление начальных нулей; (в) использование запятой (
,
) для десятичной точки. Я прав?
Ответ №1:
Со страницы руководства по PHP на number_format
:
строка number_format ( float $number , int $ decimals = 0 , строка $dec_point = ‘.’ , строка $thousands_sep = ‘,’ )
Если вы хотите, чтобы такие числа, как 123456
, были отформатированы как 1234,45
, используйте:
echo number_format($number / 100, 2, ",", "");
Если вам нужна точка в качестве разделителя тысяч ( 1.234,56
):
echo number_format($number / 100, 2, ",", ".");
Нули автоматически удаляются PHP при преобразовании строки в число.
Комментарии:
1. Это смущало меня целую вечность, потому что я думал «но где
", "
(пробел через запятую) появляется в конечном результате». Теперь я вижу, что значения разделены запятой, а одно заключено в кавычки. 😀
Ответ №2:
string number_format ( float $number ,
int $decimals = 0 ,
string $dec_point = '.' ,
string $thousands_sep = ',' )
Руководство:http://php.net/manual/en/function.number-format.php
// divide by 100 to shift ones place.
echo number_format((int)'000000000000100' / 100,2,',','');
Комментарии:
1. ошибка, разделить — вот что я имел в виду.
2. Брэд, тебе следует также записать результат, чтобы это был более наглядный пример для новичков вроде меня. Я предполагаю, что это 0000000000001,00.