为了账号安全,请及时绑定邮箱和手机立即绑定

toFixed(2) 不四舍五入?

toFixed(2) 不四舍五入?

汪汪一只猫 2022-01-20 20:43:52
我正在使用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 回答

?
素胚勾勒不出你

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 是一个相当重量级的操作。


查看完整回答
反对 回复 2022-01-20

没有找到匹配的内容?试试慕课网站内搜索吧

添加回答

代码语言

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信