toFixed(2) 不四舍五入?

我正在使用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>


汪汪一只猫
浏览 663回答 1
1回答

素胚勾勒不出你

Number.prototype.toFixed()不四舍五入。用来Math.round()做。此外,result已经有 type Number,所以parseFloat几乎没用。代替:result = parseFloat(result).toFixed(2)利用:result = Math.round(result);作为旁注,不要.map用作 的替代品.forEach,这意味着:price.map((o,i)=>{&nbsp; $(".subtotal").eq( i ).val(o*quantity[i]);&nbsp; result += o*quantity[i];});应该是这样的:price.forEach((o, i) => {&nbsp; $(".subtotal").eq( i ).val(o*quantity[i]);&nbsp; result += o*quantity[i];});此外,我建议查询 DOM 一次而不是多次,因为遍历 DOM 是一个相当重量级的操作。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript