数字を浮動小数点数または整数に変更して、人間が読めるように整形された素数を単位として文字列として表示するアルゴリズムを見つけるのに苦労しました。たとえば、120000000を「120 mil」に変換するための素晴らしいPHPアルゴリズムですか?
100500000 -> '100.5 Mil'
200400 -> '200.4 K'
143000000 -> '143 Mil'
52000000000 -> '52 Bil'
などです。
任意のポインタ?
数字を浮動小数点数または整数に変更して、人間が読めるように整形された素数を単位として文字列として表示するアルゴリズムを見つけるのに苦労しました。たとえば、120000000を「120 mil」に変換するための素晴らしいPHPアルゴリズムですか?
100500000 -> '100.5 Mil'
200400 -> '200.4 K'
143000000 -> '143 Mil'
52000000000 -> '52 Bil'
などです。
任意のポインタ?
私はこれ(下のコードを適応させるだろう私はネット上で見つけました):
コード信用は私が見つけたこのリンクに行く:あなたはまだ興味を持っている場合http://www.phpfront.com/php/human-readable-byte-format/
function humanReadableOctets($octets)
{
$units = array('B', 'kB', 'MB', 'GB', 'TB'); // ...etc
for ($i = 0, $size =$octets; $size>1024; $size=$size/1024)
$i++;
return number_format($size, 2) . ' ' . $units[min($i, count($units) -1)];
}
はしかし1000年に1024に変更することを忘れないでください...ここで
実際には、$ unit = $ units [log($ n)]の行だけで何かを行うことができます。 – n3rd
素晴らしい検索!ありがとう! –
かもしれない同様のコードがここにあります:
<?php
function prettyNumber($number) // $number is int/float
{
$orders = Array("", " K", " Mil", " Bil");
$order=0;
while (($number/1000.0) >= 1.5) { // while the next step up would generate a number greater than 1.5
$order++;
$number/=1000.0;
}
if ($order)
return preg_replace("/\.?0+$/", "",
substr(number_format($number, 2),0,5)).$orders[$order];
return $number;
}
$tests = array(100500000,200400,143000000,52000000000);
foreach ($tests as $test)
{
echo $test." -> '".prettyNumber($test)."'\n";
}
私はそれが好きです。私は特に含まれているテストが好きです。 – Christian
が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>";
}
ありがとうございます。 –
i18nを考慮して、現在のロケールに正しい小数点の区切り記号(例:ドイツのコンマ)を使用してください。 :-) – JeeBee