【问题标题】:How to keep decimal precision in multiplication and division(in jQuery, javascript)?如何在乘法和除法中保持小数精度(在 jQuery、javascript 中)?
【发布时间】:2015-10-05 18:59:54
【问题描述】:

我有以下函数,可以对jQuery中的一些业务逻辑进行乘法和除法

var rate = 39.5;
var IndiviualPercentageTaxes = 20;
var TotalPercentageTaxes = 20;

var r1 = rate* 100 / (100 + IndiviualPercentageTaxes);  

var r2 = r1* (100 + TotalPercentageTaxes)/100;

var finalRate = Math.round(r2));

finalRate是39,但预期结果是40.....

我可以轻松地重写程序以避免在计算中丢失小数精度,如下所示:

  var r2 = rate*(100 + TotalPercentageTaxes)/(100 +TotalPercentageTaxes)

但是,这将跳过 r1,并且我需要 r1 在整个程序中用于其他目的。

这也造成了一个混乱,因为我将两个计算合二为一,所以没有人知道这个公式的真正含义。

有什么建议吗?

【问题讨论】:

    标签: jquery precision


    【解决方案1】:

    你会做很多这样的事情吗?如果没有,那么只需使用正确的计算方法,然后给未来的读者留下评论,告诉他们为什么要这样做。

    但如果你做很多事情,你需要真正的精确数字。那里有几个图书馆。这个:https://github.com/MikeMcl/bignumber.js/ 可能最适合你。

    “大数字”是 Common Lisp 和 Java 中的一个术语,它包含了非常大的数字和非常的数字(为了精确)的概念,并且通常将数字保持在“大”格式(即,作为未解决的表达式),直到需要为止。

    【讨论】:

      猜你喜欢
      • 2020-08-28
      • 2018-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多