Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将120000000转换为';1.2亿欧元;?_Php_Algorithm_Formatting_Numbers - Fatal编程技术网

Php 将120000000转换为';1.2亿欧元;?

Php 将120000000转换为';1.2亿欧元;?,php,algorithm,formatting,numbers,Php,Algorithm,Formatting,Numbers,我一直在努力寻找一种很好的算法,将一个数字(可以是浮点或整数)转换成一个格式良好的可读数字,将单位显示为字符串。例如: 100500000 -> '100.5 Mil' 200400 -> '200.4 K' 143000000 -> '143 Mil' 52000000000 -> '52 Bil' 等等,你明白了 有什么指示吗? 可能是个好的开始 这可能是一个好的开始这里有类似的代码: 这里有类似的代码: 我会修改下面的代码(我在网上找到的): 我发现的这个链接

我一直在努力寻找一种很好的算法,将一个数字(可以是浮点或整数)转换成一个格式良好的可读数字,将单位显示为字符串。例如:

100500000 -> '100.5 Mil'
200400 -> '200.4 K'
143000000 -> '143 Mil'
52000000000 -> '52 Bil'
等等,你明白了

有什么指示吗?

可能是个好的开始


这可能是一个好的开始

这里有类似的代码:


这里有类似的代码:

我会修改下面的代码(我在网上找到的):

我发现的这个链接的代码是:

别忘了将1024改为1000,不过…

我会修改下面的代码(我在网上找到的):

我发现的这个链接的代码是:

不过,不要忘记将1024更改为1000…

如果您仍然感兴趣,这里有一个
log()
版本:

function wordify($val, $decimalPlaces = 1) {
    if ($val < 1000 && $val > -1000)
        return $val;
    $a = array( 0 => "", 1 => "K", 2 => "Mil", 3 => "Bil", 4 => "Tril", 5 => "Quad" );
    $log1000 = log(abs($val), 1000);
    $suffix = $a[$log1000];
    return number_format($val / pow(1000, floor($log1000)), $decimalPlaces, '.', '') . " $suffix";
}

$tests = array(-1001, -970, 0, 1, 929, 1637, 17000, 123456, 1000000, 1000000000, 1234567890123);

foreach ($tests as $num) {
    echo wordify($num)."<br>";
}
函数wordify($val,$decimalPlaces=1){
如果($val<1000&$val>-1000)
返回$val;
$a=数组(0=>“”,1=>“K”,2=>“Mil”,3=>“Bil”,4=>“Tril”,5=>“Quad”);
$log1000=对数(绝对值($val),1000);
$suffix=$a[$log1000];
返回编号格式($val/pow(1000,楼层($log1000)),$decimalPlaces,“.”,“$后缀”;
}
$tests=数组(-1001,-970,0,1929,1637,17000,123456,1000000,100000000,1234567890123);
foreach($tests作为$num){
echo wordify($num)。“
”; }
如果您仍然感兴趣,这里有一个
log()
版本:

function wordify($val, $decimalPlaces = 1) {
    if ($val < 1000 && $val > -1000)
        return $val;
    $a = array( 0 => "", 1 => "K", 2 => "Mil", 3 => "Bil", 4 => "Tril", 5 => "Quad" );
    $log1000 = log(abs($val), 1000);
    $suffix = $a[$log1000];
    return number_format($val / pow(1000, floor($log1000)), $decimalPlaces, '.', '') . " $suffix";
}

$tests = array(-1001, -970, 0, 1, 929, 1637, 17000, 123456, 1000000, 1000000000, 1234567890123);

foreach ($tests as $num) {
    echo wordify($num)."<br>";
}
函数wordify($val,$decimalPlaces=1){
如果($val<1000&$val>-1000)
返回$val;
$a=数组(0=>“”,1=>“K”,2=>“Mil”,3=>“Bil”,4=>“Tril”,5=>“Quad”);
$log1000=对数(绝对值($val),1000);
$suffix=$a[$log1000];
返回编号格式($val/pow(1000,楼层($log1000)),$decimalPlaces,“.”,“$后缀”;
}
$tests=数组(-1001,-970,0,1929,1637,17000,123456,1000000,100000000,1234567890123);
foreach($tests作为$num){
echo wordify($num)。“
”; }
请确保将i18n考虑在内,并为当前语言环境使用正确的小数点分隔符-例如,德国的逗号。:-)请确保将i18n考虑在内,并为当前语言环境使用正确的小数点分隔符-例如,德国的逗号。:-)你可以单独做一些事情,$unit=$units[log($n)]行你可以单独做一些事情,$unit=$units[log($n)]行我喜欢。我特别喜欢考试,我喜欢。我特别喜欢包括在内的测试。
function wordify($val, $decimalPlaces = 1) {
    if ($val < 1000 && $val > -1000)
        return $val;
    $a = array( 0 => "", 1 => "K", 2 => "Mil", 3 => "Bil", 4 => "Tril", 5 => "Quad" );
    $log1000 = log(abs($val), 1000);
    $suffix = $a[$log1000];
    return number_format($val / pow(1000, floor($log1000)), $decimalPlaces, '.', '') . " $suffix";
}

$tests = array(-1001, -970, 0, 1, 929, 1637, 17000, 123456, 1000000, 1000000000, 1234567890123);

foreach ($tests as $num) {
    echo wordify($num)."<br>";
}