假设我有像
这样的数字123456000000
12345000000
123456000
123456
我希望它们显示为
123.45B
12.345B
123.45M
123,456
我能想到的最好的方法是通过获取字符串长度来确定我是否需要B,M或者只需要逗号而只需要substr
前五个字符。我确信有一种更好的方法,但在我意识到我的想法很糟糕之前,我不想太远。哈
有什么好建议吗?
修改
我对B和M混淆道歉。那些代表:
答案 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';
}
}
答案 1 :(得分:0)
不知道最后的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