我在视图中显示价格。每个项目的价格设置如下:
var price = item.price * item.vat
现在,如果满足某个条件,我想在价格上使用toFixed(2)
,以显示最多两位小数。我正在尝试为案例写一个if条件:
if (conditionIsMet) {
price = price.toFixed(2);
}
但是Chrome devtools告诉我Uncaught TypeError: price.toFixed is not a function
,这非常奇怪,因为我尝试过这样的事情:
if (conditionIsMet) {
var price2 = price.toFixed(2);
}
哪个有效。我怀疑是toFixed()
返回一个字符串,这是我尝试使用parseFloat
解决的一个问题,但无济于事。我哪里错了?
答案 0 :(得分:0)
尝试将价格首先浮动parseFloat(price)
。如果您的价格是字符串,它将无法使用。
答案 1 :(得分:0)
toFixed
method returns a string
(function() {
let price = parseFloat('10.452');
document.write(typeof price + ' - ' + price.toFixed(2) + '<br />');
})();
(function() {
let price = '10.452';
document.write(typeof price + ' - ');
document.write(price.toFixed(2));
})();
如您所见,第一种方法有效,因为我正在解析浮动。
第二种方法,因为它是一个字符串,它没有必要的方法,抛出错误。
模拟你的例子:
var item = {
price: 8.99,
vat: 1.23
};
var price = item.price * item.vat;
if (true) {
price = price.toFixed(2);
}
您的示例不会引发任何错误。
答案 2 :(得分:0)
price = Number(price).toFixed(2);