我有以下函数,可以对 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));
最终的Rate是39,但预期结果是40......
我可以轻松地重写程序以避免在计算中丢失小数精度,如下所示:
var r2 = rate*(100 + TotalPercentageTaxes)/(100 +TotalPercentageTaxes)
但是,这将跳过 r1,并且我需要 r1 在整个程序中用于其他目的。
这也造成了一种困惑,因为我将两个计算合并为一个,所以没有人知道这个公式的真正含义。
有什么建议吗?
最佳答案
你会做很多这样的事情吗?如果不是,那么只需使用正确的计算并向 future 的读者留下评论,告诉他们为什么这样做。
但是如果你要做很多事情,你就需要真正的精确数字。那里有一些图书馆。这一个:https://github.com/MikeMcl/bignumber.js/可能最适合您。
“大数字”是来自 Common Lisp 和 Java 的术语,它包含非常大的数字和非常长数字(为了精度)的概念,并且通常将数字保持在“大”状态格式(即,作为 Unresolved 表达式),直到需要为止。
关于jquery - 如何在乘法和除法中保持小数精度(在 jQuery、javascript 中)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32955915/