如何保持乘法和除法的小数精度(在jQuery、javascript中)?

How to keep decimal precision in multiplication and division(in jQuery, javascript)?

我有以下函数可以对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 在整个程序中用于其他目的。

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

有什么建议吗?

你会做很多这样的事情吗?如果不是,那么只需使用正确的计算并给未来留下评论 reader 告诉他们为什么这样做。

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

"Big Numbers" 是 Common Lisp 和 Java 的一个术语,它捕获了非常大的数字和非常 数字的概念(为了精确) ,并且通常将数字保留为 "big" 格式(即,作为未解决的表达式),直到需要为止。