php转换数字

Posted

技术标签:

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

假设我有类似的数字

123456000000
12345000000
123456000
123456

我希望他们显示为

123.45B
12.345B
123.45M
123,456

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

有什么好的推荐吗?

编辑

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

B 百万 百万 百万

【问题讨论】:

可能无法完全解决您的问题,但number_format() 可能会提供帮助。在同一页面上也有此评论us2.php.net/manual/en/function.number-format.php#89888 【参考方案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

【讨论】:

我在问题编辑中添加了一些关于 B 和 M 缩写的更多说明。我未能正确评估我的问题的清晰度:( @Jackson:那就看看同页的这条评论:php.net/manual/en/function.number-format.php#89888

以上是关于php转换数字的主要内容,如果未能解决你的问题,请参考以下文章

关于时间格式的转换,MYSQL,PHP,10位数字表示时间

PHP算法--将数字金额转换成大写金额

php 数字转换为中文

php数据类型转换

php转换数字

markdown php将数字转换为罗马和罗马数字