Javascript 数字格式转为十进制

问题描述 投票:0回答:2

我有一个关于十进制数的问题。我需要将数字转换为十进制,但我无法得到我真正想要的。

The numbers that I used on my project.

我想要的是:

  • 我想将 130000 转换为 130,000,将 20911.56 转换为 20,911,56(等)

  • 首先,我在这里搜索并找到了一些更改我的号码的解决方案:

          function number_format(string,decimals=2,decimal=',',thousands='.',pre='R$ ',pos=' Reais'){
              var numbers = string.toString().match(/\d+/g).join([]);
              numbers = numbers.padStart(decimals+1, "0");
              var splitNumbers = numbers.split("").reverse();
              var mask = '';
              splitNumbers.forEach(function(d,i){
                  if (i == decimals) { mask = decimal + mask; }
                  if (i>(decimals+1) && ((i-2)%(decimals+1))==0) { mask = thousands + mask; }
                  mask = d + mask;
              });
              return pre + mask + pos;
          }
          var element = document.getElementById("format");
    
           var money= number_format("130000",2,',','.');
          element.innerHTML = money;
    

上面的代码给了我 20.911,56 但它没有给我 130,000。相反,它是 1,300,00。我该怎么办?我不能同时拥有它们吗?

javascript format numbers decimal
2个回答
2
投票

只需使用

Intl.NumberFormat
,如下所示:

const formatter = new Intl.NumberFormat('en');

console.log(formatter.format(130000)); // 130,000
console.log(formatter.format(20911.56)); // 20,911.56


0
投票

这是孟加拉国格式

首先创建一个函数

function numberFormat(number, decimals = 0) {
    let decimalNumbers = '';
    if (number.toString().includes('.')) {
        decimalNumbers = number.toString().substr(number.toString().indexOf('.') + 1, decimals);
        
        if (decimalNumbers.length < decimals) {
            for (let i = decimalNumbers.length; i < decimals; i++) {
                decimalNumbers += '0';
            }
        }
    } else {
        decimalNumbers = '0';
        for (let i = 2; i <= decimals; i++) {
            decimalNumbers += '0';
        }
    }

    number = parseInt(number);
    number = number.toString().split('').reverse().join('');

    let n = '';
    const stringLength = number.length;

    for (let i = 0; i < stringLength; i++) {
        if (i === 2 || (i > 2 && i % 2 === 0)) {
            n = n + number[i] + ',';
        } else {
            n = n + number[i];
        }
    }

    number = n.split('').reverse().join('');

    if (decimals !== 0) {
        number = number + '.' + decimalNumbers;
    }

    if (number[0] === ',') {
        number = number.substr(1);
    }
    
    if (number[1] === ',' && number[0] === '-') {
        number = number.substr(0, 1) + number.substr(2);
    }

    return number;
}

调用函数

* numberFormat(5000000, 2)  // Output: 50,00,000.00
* numberFormat(5000000)  // Output: 50,00,000
* numberFormat(-15264.61, 2)  // Output: -15,264.61
* numberFormat(2106.02)  // Output: 2,106
* numberFormat(2.02)  // Output: 2
* numberFormat(21.02)  // Output: 21
* numberFormat(210.02)  // Output: 210
* numberFormat(2106.02)  // Output: 2,106
* numberFormat(21060.02)  // Output: 21,060
* numberFormat(210600.02)  // Output: 2,10,600
* numberFormat(2106000.02)  // Output: 21,06,000
* numberFormat(21060000.02)  // Output: 2,10,6,0,000
* numberFormat(210600000.02)  // Output: 21,06,00,000
* numberFormat(-210600000.0222, 2)  // Output: -21,06,00,000.02
© www.soinside.com 2019 - 2024. All rights reserved.