我的值是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 帮助我获得所需的结果。
答案 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]);