【问题标题】:php converting numberphp转换数字
【发布时间】:2012-03-15 19:44:01
【问题描述】:

假设我有类似的数字

123456000000
12345000000
123456000
123456

我希望他们显示为

123.45B
12.345B
123.45M
123,456

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

有什么好的推荐吗?

编辑

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

  • B 百万
  • 百万 百万

【问题讨论】:

标签: php number-formatting


【解决方案1】:

好的,所以我之前的回答认为您正在处理文件大小,因此我将其删除。不过这个方案的逻辑是一样的:

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

【讨论】:

  • @Jackson,现在我注意到它没有返回你想要的第二个数字(它给出的是 12.35B 而不是 12.354B),但我相信这段代码无论如何都应该作为一个起点。 .
【解决方案2】:

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-27
相关资源
最近更新 更多