如何在jQuery、JavaScript中进行乘除法时保留小数精度?

4
我有以下函数,它可以在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));

最终速率是39,但预期结果是40......

我可以轻松重写程序,避免在计算中失去小数精度,像下面这样:

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

然而,这将跳过r1,但我需要在整个程序中将r1用于其他目的。
这也导致了混淆,因为没有人知道这个公式实际上代表什么,因为我把两个计算合并成了一个。
有什么建议吗?
1个回答

1

你会经常做这种事情吗?如果不是,那么只需使用正确的计算方法,并留下注释告诉未来读者为什么要这样做。

但如果你需要频繁进行此类操作,则需要使用真正精确的数字。有一些库可以使用。其中这个库:https://github.com/MikeMcl/bignumber.js/ 可能最适合您。

"大数"是Common Lisp和Java中的一个术语,它涵盖了非常大的数字和非常的数字(用于精度),并且通常将数字保持在其"大"格式(即作为未解决的表达式)直到需要使用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接