2015-10-05 98 views
4

我有以下功能,可以在jQuery的做乘法和除法了一些业务逻辑如何保持乘法和除法的小数精度(在jQuery中,javascript)?

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是,但该预期的结果 .....

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

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

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

这也造成了一个混淆,没有人知道这个公式真正意味着什么,因为我将两个计算结合为一个。

有什么建议吗?

回答

1

你打算做很多这样的事情吗?如果不是,那么只需使用正确的计算方法,并向未来的读者发表评论,告诉他们为什么这样做。

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

“大数字”是来自Common Lisp和Java的一个术语,它捕获了非常大的数字和非常长的数字(精确度)的想法,并且经常使数字保持其“大”格式(即,作为未解析的表达式),直到需要。