将 K 格式的千位转换为常规的千位格式

Posted

技术标签:

【中文标题】将 K 格式的千位转换为常规的千位格式【英文标题】:Convert Thousands in K format to regular Thousands format 【发布时间】:2018-06-18 08:16:52 【问题描述】:

我收到了以下格式的号码:

12.2K

我想将此数字转换为显示:

12200

examples ive seen 转换为 K 格式,但我想从 K 格式转换。

有没有简单的方法可以做到这一点?

谢谢!

【问题讨论】:

这不是代码编写服务。一旦你有了一些代码,就问一个更具体的问题。 【参考方案1】:

你的意思是,像这样的东西?这将能够转换成千上万,等等。

<?php
  $s = "12.2K";
  if (strpos(strtoupper($s), "K") != false) 
    $s = rtrim($s, "kK");
    echo floatval($s) * 1000;
   else if (strpos(strtoupper($s), "M") != false) 
    $s = rtrim($s, "mM");
    echo floatval($s) * 1000000;
   else 
    echo floatval($s);
  
?>

【讨论】:

【参考方案2】:
<?php
$number = '12.2K';

if (strpos($number, 'K') !== false)
    
    $number = rtrim($number, 'K') * 1000;
    

echo $number
?>

基本上,您只是想检查字符串是否包含某个字符,如果包含,则通过将其取出并将其乘以 1000 来响应它。

【讨论】:

【参考方案3】:

另一种方法是将缩写放在一个数组中,并使用 的幂来计算要相乘的数字。 如果您有很多缩写,这会给出更短的代码。 我使用 strtoupper 来确保它同时匹配 kK

$arr = ["K" => 1 ,"M" => 2, "T" => 3]; // and so on for how ever long you need

$input = "12.2K";
if(isset($arr[strtoupper(substr($input, -1))])) //does the last character exist in array as an key
    echo substr($input,0,-1) * pow(1000, $arr[strtoupper(substr($input, -1))]); //multiply with the power of the value in array
    //      12.2             *       1000^1
else
    echo $input; // less than 1k, just output

https://3v4l.org/LXVXN

【讨论】:

【参考方案4】:
$result = str_ireplace(['.', 'K'], ['', '00'], '12.2K');

你也可以用其他字母等来扩展它。

【讨论】:

当输入为12k时,那么呢?

以上是关于将 K 格式的千位转换为常规的千位格式的主要内容,如果未能解决你的问题,请参考以下文章

格式化熊猫数据框中整数的千位分隔符

C++中的千位分隔符

整个项目中所有数字的千位角分隔符

如何设置带两位小数的千位分隔符?

如何显示或隐藏数字中的千位分隔符

如何让php的localeconv返回正确的千位分隔符