将货币价值从20000美元缩短到20000美元


Shorten currency values like $20000 to $20k

我想转换这样的货币值:

4 000 000 000 => 4b
2 000 000 => 2m
2 250 000 => 2.25m
195 000 => 195k
10 000 => 10k

任何人都知道有一个现有的库/函数可以做到这一点,或者我是否需要通过满足0-9999、10000-999999等条件的条件语句自己写这一点。。?

您可以为此创建一个自定义函数。下面的一个,首先从字符串中删除除数字以外的所有内容。然后,它根据数字的大小和提供的数字来格式化数字。

function shorten($num, $digits = 1) {
    $num = preg_replace('/[^0-9]/','',$num);
    if ($num >= 1000000000) {
        $num = number_format(($num / 1000000000), $digits, '.', '') + 0;
        $num = $num . "b";
    }
    if ($num >= 1000000) {
        $num = number_format(($num / 1000000), $digits, '.', '') + 0;
        $num = $num . 'm';
    }
    if ($num >= 1000) {
        $num = number_format(($num / 1000), $digits, '.', '') + 0;
        $num = $num . 'k';
    }
    return $num;
}
echo shorten("4 000 000 000");
echo shorten("3 200 000 000");
echo shorten("195 000");

演示:http://codepad.org/K971MzVx

您可以创建这样的函数来显示缩短的值,但它会错过的确切值

function shortifyCurrency($var){
  $var=doubleval($var);
  if($var>=1000000000){
    $var=($var/1000000000)."b";
  }else if($var>=1000000){
    $var=($var/1000000)."m";
  }else if($var>=1000){
    $var=($var/1000)."k";
  }
  return $var;
}
//Output 4b
echo shortifyCurrency(4000000000);

或者,您可以使用以下功能来显示有关值的更详细信息

function shortifyCurrencyXtream($var){
  $var=doubleval($var);
  $print_str="";
  if($var>=1000000000){
    $print_str.=round($var/1000000000)."b";
    $var=$var%1000000000;
  }
  if($var>=1000000){
    if($print_str!="") $print_str.=" ";
    $print_str.=round($var/1000000)."m";
    $var=$var%1000000;
  }
  if($var>=1000){
    if($print_str!="") $print_str.=" ";
    $print_str.=($var/1000)."k";
  }
  return $print_str;
}
//Output 4b 101m 500.3k
echo shortifyCurrencyXtream(4100500300);