gpt4 book ai didi

javascript - toFixed(2) 不四舍五入?

转载 作者:行者123 更新时间:2023-11-30 19:04:17 25 4
gpt4 key购买 nike

我正在使用 toFixed(2),但它没有变圆,我找不到原因?

表单

<div class="col col-sm-2"><%= f.input :price, placeholder: "Price incl. VAT", label: false, input_html:{class: "field price"}  %></div>
<div class="col col-sm-2 "><%= f.input :amount, label: false, input_html:{class: "field quantity"} %></div>
<div class="col col-sm-2"><input type="text" class="field subtotal form-control"></div>

脚本

<script>
//on change
$('.field').keyup(function() {
var price = [];
var quantity = [];

$('.price').each(function(i, obj) {
price.push(+obj.value);
});

$('.quantity').each(function(i, obj) {
quantity.push(+obj.value);
});

console.log(price)
console.log(quantity)

var result = 0;

price.map((o,i)=>{
$(".subtotal").eq( i ).val(o*quantity[i]);
result += o*quantity[i];
});

result = parseFloat(result).toFixed(2)

$(".result").val(result);
})

</script>

最佳答案

Number.prototype.toFixed() 不对数字进行四舍五入。使用 Math.round() 来完成。此外,result 已经具有类型 Number,因此 parseFloat 几乎没有用。而不是:

result = parseFloat(result).toFixed(2)

使用:

result = Math.round(result);

作为旁注,不要使用 .map 代替 .forEach,这意味着:

price.map((o,i)=>{
$(".subtotal").eq( i ).val(o*quantity[i]);
result += o*quantity[i];
});

应该是这样的:

price.forEach((o, i) => {
$(".subtotal").eq( i ).val(o*quantity[i]);
result += o*quantity[i];
});

此外,我建议查询 DOM 一次而不是多次,因为遍历 DOM 是一个相当重量级的操作。

关于javascript - toFixed(2) 不四舍五入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59156730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com