Формат чисел PHP

#php #number-formatting

#php #форматирование чисел

Вопрос:

У меня есть эта строка :

 000000000000100
  

и нужно преобразовать его в:

 1,00
  

Итак, правила таковы:

  1. Разделите число на 100 и используйте запятую в качестве десятичного разделителя
  2. Вычеркните начальные нули
  3. Сохраняйте два десятичных знака

Комментарии:

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.