php转换号码

时间:2012-03-15 19:44:02

标签: php number-formatting

假设我有像

这样的数字
123456000000
12345000000
123456000
123456

我希望它们显示为

123.45B
12.345B
123.45M
123,456

我能想到的最好的方法是通过获取字符串长度来确定我是否需要B,M或者只需要逗号而只需要substr前五个字符。我确信有一种更好的方法,但在我意识到我的想法很糟糕之前,我不想太远。哈

有什么好建议吗?

修改

我对B和M混淆道歉。那些代表:

  • B illion
  • M illion

2 个答案:

答案 0 :(得分:3)

好的,所以我之前的回答认为你正在处理文件大小,我删除了它。但是这个解决方案的逻辑是相同的:

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

答案 1 :(得分:0)

不知道最后的BM部分,但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