我已经尝试了多次,并以多种方式将total.tofixed(2)total.toLocaleString()添加到我的代码中,但是它们最终无法正常工作或互相抵消。我不确定自己在做什么错。下面的代码不起作用,但是如果我将两者中的一个去掉,它将起作用。
var total = (parseFloat(itemCost.replace(/,/g, '')) +
(parseFloat(itemCost.replace(/,/g, '')) * salesTax/100));
total = (total)
total = total.toLocaleString().toFixed(2);
//display amount
document.getElementById("totalTip").style.display = "block";
document.getElementById("amount").innerHTML = total;
答案 0 :(得分:0)
那是因为String.prototype.toFixed
不存在-它是Number.prototype.toFixed
。首先使用toFixed
,然后使用toLocaleString
(因为localeString
添加了逗号,如果用于构造一个,则会使数字无效)。
在使用toFixed
之前,您需要将toLocaleString
的结果转换为数字,因为toFixed
创建的字符串不是数字。
total = (+total.toFixed(2)).toLocaleString();
答案 1 :(得分:0)
在阅读Number#toLocaleString的文档时,该文档具有一个或两个可选参数,使用这些参数将为您提供所需的信息
let number = 12345678.123456
console.log(number.toLocaleString('en',{minimumFractionDigits:2, maximumFractionDigits:2}));
或,以在客户区域设置中显示
let number = 12345678.123456
console.log(number.toLocaleString(navigator.language,{minimumFractionDigits:2, maximumFractionDigits:2}));