如何制作一个好的数字格式?

时间:2016-06-24 03:28:59

标签: php

我想要这样的数字格式(有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感到困惑

解决我问题的任何解决方案?

2 个答案:

答案 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