【问题标题】:Format number to abbreviated number将数字格式化为缩写数字
【发布时间】:2014-02-26 13:41:29
【问题描述】:

我有一个数据库,其中有一列包含数字格式的值,例如:

5,000 for 5k 

86,600 for 86.6k

4,100,000 for 4.1m

在浏览器中显示时,它应该显示为 5k 代表 5000 ,86.6k 代表 86,600 等。我需要 php 中的代码。如果有任何内置函数可以做到这一点,请提及。

【问题讨论】:

  • 所以你只是想交换单词?
  • 数据库中真的有带逗号的数字吗?
  • 我不认为有任何内置的缩写数字。你必须自己写。
  • 不,数据库只包含数字而不是逗号。

标签: php mysql sql converter varchar


【解决方案1】:

如果你把它们作为数字,你可以直接使用这个函数。

function formatValue($size, $precision = 1)
{
    static $suffixes = array('', 'k', 'm');
    $base = log($size) / log(1000);

    return round(pow(1000, $base - floor($base)), $precision) . $suffixes[floor($base)];
}

如果没有数字,请使用PHP: unformat money

对于您的特殊情况,您可能会使用一些肮脏的技巧,但如果您有更多特殊情况,我不推荐它。

function formatValue($size, $precision = 1)
{
    static $suffixes = array('', 'k', 'm');
    $base = log($size) / log(1000);

    if ($base >= 5/3 && $base < 2) {
        return round(pow(1000, $base - floor($base)) / 100, $precision) . 'lakh';
    }

    return round(pow(1000, $base - floor($base)), $precision) . $suffixes[floor($base)];
}

【讨论】:

  • 你可能想添加一些东西来删除逗号
  • 谢谢你的代码,但是对于 100000 它给了 100k,我需要将它打印为 10 万。
  • @Rajesh:你可以根据你的其他格式修改函数。
  • @Rajesh 已更新以反映您的要求。
猜你喜欢
  • 2017-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-16
  • 1970-01-01
  • 2020-10-12
相关资源
最近更新 更多