我不能同时使用.toFixed(2)和.toLocaleString()

时间:2019-07-07 23:59:22

标签: javascript html numbers

我已经尝试了多次,并以多种方式将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;

2 个答案:

答案 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}));