如何使用javascript执行数字的逗号和十进制分隔?

时间:2018-07-26 07:58:20

标签: javascript

我的值是2000000,我希望将其格式化为2,000,000.00

下面是我尝试过但无法获得确切输出的脚本。

function myFunction() {
  var num = 2000000;

  var c = num.toLocaleString()
  var n = num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
  //var number=n.
  var number = parseInt(n).toFixed(2);
  document.getElementById("demo").innerHTML = n;
  document.getElementById("demmo").innerHTML = number;
}

此函数给出2,000,000和2.00,但应为2,000,000.00 帮助我获得所需的结果。

5 个答案:

答案 0 :(得分:4)

使用toFixed,然后添加,并确保最后有两个0:

const addTo = (add, length) => str => str.length >= length ? str : addTo(add, length)(str + add);
const chunk = (sym, length) => str => str.length < length ? str : chunk(sym, length)(str.substr(0, str.length - length)) + sym + str.substr(str.length - length);


const [num, fraction] = 2000000..toFixed(2).split(".");
return chunk(",", 3)(num) + "." + addTo("0", 2)(fraction);

答案 1 :(得分:4)

您可以使用ECMAScript国际化API的NumberFormat对象:

let num = 2000000;
let l10nEN = new Intl.NumberFormat("en-US", { minimumFractionDigits: 2 });

console.log(l10nEN.format(num));

或者直接使用数字类型的toLocaleString()方法:

let num = 2000000;

console.log(num.toLocaleString("en-US", { minimumFractionDigits: 2 }));

答案 2 :(得分:2)

答案 3 :(得分:2)

尝试一下

    num.toLocaleString('en', { minimumFractionDigits:2 })

答案 4 :(得分:2)

您可以使用Number.prototype.toLocaleString()Number.prototype.toFixed()来获得所需的结果。

演示

let value = 2000000;

value = value.toFixed(2).split('.');

console.log(Number(value[0]).toLocaleString('en') + '.' + value[1]);

value= 2000000.87;

value = value.toFixed(2).split('.');

console.log(Number(value[0]).toLocaleString('en') + '.' + value[1]);