我想要这样的数字格式(有3分):
Point 1
=>如果它低于一百万(0-999999),那么结果是这样的:
1 => 1
10 => 10
100 => 100
1000 => 1,000
10000 => 10,000
100000 => 100,000
999999 => 999,999
Point 2
=>如果它低于十亿(1000000-999999999),结果是这样的:
1000000 => 1 million
1260000 => 1,26 million
234500000 => 234,5 million
Point 3
=>如果它超过十亿(> = 1000000000),结果如下:
1000000000 => 1 billion
1781000000 => 1,781 billion
12781000000 => 12,781 billion
我只能在第1点工作
代码是这样的:
<?php
function format_rp($value) {
return number_format($value, 0, ',', ',');
}
echo format_rp(115000);
?>
我对工作点2和点3感到困惑
解决我问题的任何解决方案?
答案 0 :(得分:3)
这是我为你写的功能:
function my_number_format($number, $thousands_separator=',') {
static $words = array(null, null/*'thousand'*/, 'million', 'billion', 'trillion' , /*etc*/);
$parts = explode(',', number_format($number, 0, null, ','));
$index = count($parts)-1;
if($words[$index]){
$divider = pow(1000, $index);
$result = round($number/$divider, 3);
$result = str_replace('.', $thousands_separator, $result).' '.$wordss[$index];
} else {
$result = join($thousands_separator, $parts);
}
return $result;
}
语法短的相同功能:
function my_number_format($number, $thousands_separator=',') {
static $words = array(null, null/*'thousand'*/, 'million', 'billion', 'trillion' , /*etc*/);
$parts = explode(',', number_format($number, 0, null, ','));
$index = count($parts)-1;
return $words[$index]
? str_replace('.', $thousands_separator, round($number/pow(1000,$index),3)).' '.$words[$index]
: join($thousands_separator, $parts);
}
测试:
echo my_number_format(1); // 1
echo my_number_format(10); // 10
echo my_number_format(100); // 100
echo my_number_format(1000); // 1,000
echo my_number_format(10000); // 10,000
echo my_number_format(100000); // 100,000
echo my_number_format(999999); // 999,999
echo my_number_format(1000000); // 1 million
echo my_number_format(1260000); // 1,26 million
echo my_number_format(234500000); // 234,5 million
echo my_number_format(1000000000); // 1 billion
echo my_number_format(1781000000); // 1,781 billion
echo my_number_format(12781000000); // 12,781 billion
答案 1 :(得分:0)
适用于任意数千个群组:
function numberToThousands($number, $decimals = 2) {
$units = ['', 'thousand', 'million', 'billion', 'trillion', 'quadrillion', 'quintillion'];
$groups = floor((strlen(intval($number))-1)/3);
$number /= pow(1000, $groups);
return round($number, $decimals) .' '. $units[$groups];
}
numberToThousands(123456); // 123.46 thousand