1

60000 を 60k に、または 60100 を 60.1k に変換する関数があります。

しかし、たとえば 60123 を入力すると、60.123k が出力されます。

number_format のように切り上げずに 60.1k を出力するにはどうすればよいですか。

編集:変換を行う私の関数は次のとおりです

function format($val) {
$letter = "";
while ($val >= 1000) {
$val /= 1000;
$letter .= "K";
}
$letter = str_replace("KKKK", "000B", $letter);
$letter = str_replace("KKK", "B", $letter);
$letter = str_replace("KK", "M", $letter);
return $val.$letter;
}

これが私がエコーアウトするために入れたものです

echo format(1)."<br>";
echo format(123548)."<br>";
echo format(1000000)."<br>";
echo format(1000000000)."<br>";
echo format(1200000000)."<br>";

出力は次のとおりです。

1
123.548K
1M
1B
1.2B

123.548Kの場合は「123.5K」にしたい

4

3 に答える 3

2

floor 関数を使用できます: http://www.php.net/manual/en/function.floor.php - floor(-1.2) = -2 であることに注意してください。

于 2012-04-04T18:11:04.163 に答える
1

以下をお試しください

function format($val) {
    $letter = "";
    while ($val >= 1000) {
        $val /= 1000;
        $letter .= "K";
    }
    $val = round($val, 1); // it provides the correct format
    $letter = str_replace("KKKK", "000B", $letter);
    $letter = str_replace("KKK", "B", $letter);
    $letter = str_replace("KK", "M", $letter);
    return $val.$letter;
}
于 2012-04-04T18:22:50.047 に答える
1
$value = 123;
echo number_format($value / 1000, 2).'k';

編集 (丸めに関するコメントは表示されませんでした)。値を文字列として扱います。

$value = 60146;
$value = $value / 1000;
$value = substr($value, 0, strpos($value, '.')).'.'.substr($value, strpos($value, '.'), 3).'k';
echo $value;
于 2012-04-04T18:11:12.993 に答える