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>";
}