【问题标题】:Controlling the decimal output in JavaScript在 JavaScript 中控制十进制输出
【发布时间】:2018-04-08 14:30:27
【问题描述】:

我应该在这段代码中的哪里添加 toFixed 方法来计算金额,以便我可以将小数控制到 18 位,这样我就不会得到错误的计算。

现在 100,000 应该返回 51,但它正在返回 51.00000000000004

< script type = "text/javascript" >
  $(document).ready(function() {
    var qty = $("#qty");
    qty.keyup(function() {
      var total = isNaN(parseInt(qty.val() * $("#price").val())) ? 0 : (qty.val() * $("#price").val())
      $("#total").val(total);
    });
  }); 
</script>

【问题讨论】:

    标签: javascript floating-point decimal calculator precision


    【解决方案1】:

    在您设置值之前,这里有一个选项:

    $("#total").val(total.toFixed(2));
    

    数学之后的另一个选项就在这里:

    (qty.val() * $("#price").val()).toFixed(2)
    

    【讨论】:

    • 谢谢你,我需要 18 个位置,所以我改为 18,但确切的值仍然不同。现在 100,000 返回 51.000000000000007105,有没有办法保留 18 个位置但确保返回的数字准确无误?
    • @DavidClabaugh 您遇到了这样一个事实,即浮点数是近似值,而 JavaScript 数字对于那么多小数位来说不够精确。见:Is floating point math broken?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-10
    • 2016-01-05
    • 2017-01-18
    • 2012-03-13
    • 1970-01-01
    • 2022-01-14
    • 2017-05-29
    相关资源
    最近更新 更多