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】:不知道最后一个 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
【讨论】:
我在问题编辑中添加了一些关于 B 和 M 缩写的更多说明。我未能正确评估我的问题的清晰度:( @Jackson:那就看看同页的这条评论:php.net/manual/en/function.number-format.php#89888以上是关于php转换数字的主要内容,如果未能解决你的问题,请参考以下文章