1

我有一个函数可以将 60000 转换为 60k 或 60100 转换为 60.1k

但是如果我输入例如 60123,它将输出 60.123k

如何使它输出 60.1k 而不会像 number_format 那样四舍五入。

编辑:这是我进行转换的函数

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
$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 回答
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 回答