我有一个功能可以将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”
答案 0 :(得分:2)
您可以使用楼层功能:http://www.php.net/manual/en/function.floor.php - 请注意楼层(-1.2)= -2,如果可以的话。
答案 1 :(得分: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;
答案 2 :(得分: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;
}