Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用ajax和php将总价变量限制为2位小数_Javascript_Ajax - Fatal编程技术网

Javascript 使用ajax和php将总价变量限制为2位小数

Javascript 使用ajax和php将总价变量限制为2位小数,javascript,ajax,Javascript,Ajax,我使用下面的代码片段来计算总价。这非常有效,除了#在某些情况下,totalPrice会扩展到例如267.9999999美元。如何将此函数中的#totalPrice重新格式化为两位小数,这是处理价格的标准 function getTotalCost(inventory) { if(inventory) { getTotalParts(inventory); getTotalMarkup(inventory); } var labor = $

我使用下面的代码片段来计算总价。这非常有效,除了#在某些情况下,totalPrice会扩展到例如267.9999999美元。如何将此函数中的#totalPrice重新格式化为两位小数,这是处理价格的标准

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();