Javascript 使用ajax和php将总价变量限制为2位小数
我使用下面的代码片段来计算总价。这非常有效,除了#在某些情况下,totalPrice会扩展到例如267.9999999美元。如何将此函数中的#totalPrice重新格式化为两位小数,这是处理价格的标准Javascript 使用ajax和php将总价变量限制为2位小数,javascript,ajax,Javascript,Ajax,我使用下面的代码片段来计算总价。这非常有效,除了#在某些情况下,totalPrice会扩展到例如267.9999999美元。如何将此函数中的#totalPrice重新格式化为两位小数,这是处理价格的标准 function getTotalCost(inventory) { if(inventory) { getTotalParts(inventory); getTotalMarkup(inventory); } var labor = $
function getTotalCost(inventory) {
if(inventory) {
getTotalParts(inventory);
getTotalMarkup(inventory);
}
var labor = $('#labor').val() * 1;
var totals = 0;
for(i in totalMarkup) {
totals += totalMarkup[i];
}
totalCost = totals+labor;
/*if(totals == 0) {
totalCost = 0;
}*/
$('#totalPrice').html(totalCost);
}
当使用javascript时,浮点值总是一个坏消息。你能做的最好的事情就是把它汇总起来 但在这种情况下,你可以这样做
(totalCost).toFixed(2);
您可以像这样在JavaScript中使用Math.round函数
totalCost = Math.round(totalCost*100)/100;
$('#totalPrice').html(totalCost);
你可以有:
$('#totalPrice').html(totalCost.toFixed(2));
见:
请注意,toFixed
方法返回一个格式化的数字,因此将该数字转换为字符串。这不是一个问题,因为html
需要一个字符串,但请记住,为了避免在需要数字和时串接字符串。我相信您使用的是$('#labor').val()*1正是因为这个原因。但这不是必须的,最好使用以下方法:
重复回答这里我相信$(“#劳动”).val()*1
这是一种多么奇怪的方式,用于铸造数字>/code>??!!!我真的很喜欢:)如果这个值不是一个数字,你会得到NaN@fmsf您也可以使用+$(“#labor”).val()
获得相同的结果。@工程师可以在其他作用域上生成concat,而*1将始终将其转换为numberexcellent,谢谢您的帮助。我知道为什么使用parseFloat或一元数更好?这取决于您的输入。我通常更喜欢一元加号,因为它是运算符,因此不是函数调用。但是如果我真的想“解析”(正如方法所说)输入字符串而不仅仅是转换,那么有时候parseFloat
做得更好。我举一些具体的例子,如果你有+“31.40美元”
,你会得到NaN
。相反,使用parseFloat(“31.40美元”)
将31.4
作为数字。请参阅我在回答中提供的链接以了解更多详细信息
var labor = +$('#labor').val();