PHP实现大数字格式化成K/M/B结尾的简短形式

2.3k 技术 一条评论

这个功能在显示文章访问量中会用到,在GitHub的star中也会有,比如:

  • 232简短显示为232
  • 12556简短显示为12.6k(四舍五入)
  • 1232323简短显示为1.2m(四舍五入)
  • 32343533232简短显示为32.3b(四舍五入)

PHP实现代码:

/**
 * 转换数字为简短形式
 * @param $n int 要转换的数字
 * @param $precision int 精度
 */
function shortenNumber($n, $precision = 1)
{
    if ($n < 1e+3) {
        $out = number_format($n);
    } else if ($n < 1e+6) {
        $out = number_format($n / 1e+3, $precision) . 'k';
    } else if ($n < 1e+9) {
        $out = number_format($n / 1e+6, $precision) . 'm';
    } else if ($n < 1e+12) {
        $out = number_format($n / 1e+9, $precision) . 'b';
    }

    return $out;
}

 

参考资料:

  1. Shorten long numbers to K/M/B?

1 条评论

l
liuwave says: 回复

这个逻辑实在是有问题。

如果大于 1e+12呢?

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

昵称 *