修复我的函数以使用附加的 Million, Billion, Thousandth 字符串转换大整数更具可读性

Posted

技术标签:

【中文标题】修复我的函数以使用附加的 Million, Billion, Thousandth 字符串转换大整数更具可读性【英文标题】:Fixing my function to transform large integers more readable with their appended Million, Billion, Thousandth string 【发布时间】:2021-03-14 21:41:13 【问题描述】:

我有这个函数可以将大数字转换成人眼更易读的东西: 10,000,000 = 10M 10,000,000,000 = 10B

但是,当大数为 100(磨机,账单,千分之一)时,就会出现问题。

200,000,000,000 转换为 0.2 t(万亿),我希望它转换为 200B,而不是十进制格式。这与千亿、百万、千等中的任何数字相同...

  function convrt(val)  
  
    // thousands, millions, billions etc.. 
    var s = ["", "k", "M", "B", "t"]; 

    // dividing the value by 3. 
    var sNum = Math.floor(("" + val).length / 3); 

    // calculating the precised value. 
    var sVal = parseFloat(( 
      sNum != 0 ? (val / Math.pow(1000, sNum)) : val).toPrecision(2)); 
    
    if (sVal % 1 != 0)  
        sVal = sVal.toFixed(1); 
     

    // appending the letter to precised val. 
    return sVal + s[sNum]; 
 

如何用上面的代码解决这个问题?

【问题讨论】:

【参考方案1】:

尝试使用循环。 您可以添加数字小数部分的格式。

function convrt(number) 
    postfixes = ['', 'k', 'M', 'B', 't']
    count = 0
    while (number >= 1000 && count < postfixes.length) 
        number /= 1000
        count++
     
    return number + postfixes[count];
 

注意。您可以通过剪切数字字符串来做到这一点(每个循环都需要去除字符串的最后 3 个字符,直到字符串的长度小于 4 个字符)。但是在这种情况下,如果需要,小数部分会比较困难。

【讨论】:

【参考方案2】:

另一种方法

// Function
const convrt = (n) => 
  const matrix = 
    "t": 1.0e+12,
    "B": 1.0e+9,
    "M": 1.0e+6,
    "k": 1.0e+3,
    "": 1.0e+0
  ;
  // Loop through matrix and return formatted value
  for(const k in matrix)
    if(Math.abs(Number(n)) >= matrix[k])
      return Math.round(Number(n) / matrix[k]) + k;
;

// Demo
console.log(convrt(215));
console.log(convrt(45145));
console.log(convrt(-6845215));
console.log(convrt(92674883122));
console.log(convrt(2192674883122));

【讨论】:

很难解决,尤其是对他来说。并且不要使用小数部分。但这很好,因为它适用于负数。 好吧,他从字面上问:“......而不是十进制格式......”)

以上是关于修复我的函数以使用附加的 Million, Billion, Thousandth 字符串转换大整数更具可读性的主要内容,如果未能解决你的问题,请参考以下文章

如何修复我的部分中的元素数组。当我调用函数时它不会显示我的工作......?

使用 Python 读取压缩的 ESRI BIL 文件

如何使用我的机器人修复此“附件不是构造函数”错误?

以递归方式附加到 .csv 文件

如何修复 Windows App 认证工具包平台版本启动失败

Cloud Functions:如何上传附加文件以在代码中使用?