删除短号中的小数,其中0为0

时间:2013-12-16 00:41:08

标签: php

我使用了一个函数来缩短数字。像10k,30M等我希望只是一个小数(4.9K),但只有当它不同于0.我需要7k而不是7.0K。我怎么能这样做?我尝试使用str_replace但它不起作用。 任何解决方案?

function num_short($n, $precision = 1) {
    if ($n < 1000) {
        $n_format = number_format($n);
    } else if ($n < 1000000) {
        $n_format = number_format($n / 1000, $precision) . 'K';
    } else if ($n < 1000000000) {
        $n_format = number_format($n / 1000000, $precision) . 'M';
    } else {
        $n_format = number_format($n / 1000000000, $precision) . 'B';
    }
    $n_format = str_replace("",".0",$n_format);
    return $n_format;
}

2 个答案:

答案 0 :(得分:1)

round($n / 1000000, $precision) . 'M'

编辑:它不会删除所有小数,除非$n超过浮点精度限制:

echo round(12345678 / 1000000, 1) . 'M';
=> 12.3M

来自@Theraot的公正评论。如果没有四舍五入,你可以选择:

(floor($n / (1000000 / pow(10, $precision))) / pow(10, $precision)) . 'M'

示例:

echo (floor(12345678 / (1000000 / pow(10, 1))) / pow(10, 1)) . 'M';
=> 12.3M

答案 1 :(得分:1)