php конвертирующий номер - PullRequest
1 голос
/ 15 марта 2012

Допустим, у меня есть числа типа

123456000000
12345000000
123456000
123456

, и я хочу, чтобы они отображались как

123.45B
12.345B
123.45M
123,456

Лучший способ, которым я могу придумать, это получить длина строки , чтобы определить, нужен ли мне B, M или ничего кроме запятых и просто substr первых пяти символов.Я уверен, что есть лучший способ, и я не хочу заходить слишком далеко, прежде чем я пойму, что моя идея - отстой.хах.

Любые хорошие рекомендации?

РЕДАКТИРОВАТЬ

Мои извинения за путаницу B и M. Они представляют:

  • B иллюзия
  • M иллюзия

Ответы [ 2 ]

3 голосов
/ 16 марта 2012

Хорошо, мой предыдущий ответ был связан с тем, что вы имеете дело с размерами файлов, и я удалил его.Однако логика этого решения та же:

function format_number($num) {
     if($num < 1000000) {
        return number_format($num);
     } elseif ($num < 1000000000) {
        return number_format($num/1000000, 2) . 'M';
     } else {
        return number_format($num/1000000000, 2) . 'B';
     }
}

http://codepad.org/nb89ze5J

0 голосов
/ 15 марта 2012

Не знаю о последней части B или M, но в PHP есть функция с именем number_format , которая выполняет следующее (из документации) -

$number = 1234.56;

// english notation (default)
$english_format_number = number_format($number);
// 1,235

// French notation
$nombre_format_francais = number_format($number, 2, ',', ' ');
// 1 234,56

$number = 1234.5678;

// english notation without thousands separator
$english_format_number = number_format($number, 2, '.', '');
// 1234.57
...