如何保持乘法和除法的小数精度(在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" 格式(即,作为未解决的表达式),直到需要为止。
我有以下函数可以对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" 格式(即,作为未解决的表达式),直到需要为止。