我正在使用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>
1 回答
![?](http://img1.sycdn.imooc.com/5333a1bc00014e8302000200-100-100.jpg)
素胚勾勒不出你
TA贡献1827条经验 获得超9个赞
Number.prototype.toFixed()不四舍五入。用来Math.round()做。此外,result已经有 type 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 是一个相当重量级的操作。
添加回答
举报
0/150
提交
取消