php转换数字


php converting number

假设我有类似的数字

123456000000
12345000000
123456000
123456

我想让他们以的身份出现

123.45B
12.345B
123.45M
123,456

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

有什么好的建议吗?

编辑

我对B和M的混淆表示歉意。这些代表:

  • B百万
  • M百万

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

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

不知道最后一个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