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

标签 jquery precision

我有以下函数,可以对 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/

相关文章:

javascript - 无法更新 ng-repeat 离开动画的范围

javascript - JQuery 最大数量 + 随机化

javascript - 如何使用 JavaScript 获取图像尺寸(高度和宽度)

java - "new BigDecimal(13.3D)"结果不精确 "13.3000000000000007105.."?

c - 如何在 C 中将 float 转换为字符串而不丢失用户输入的精度?

C# 进程等待毫秒精确

javascript - jquery 引用出错并同时获取两个版本的 jquery

javascript - getJSON 更新 javascript datetimepicker

floating-point - 为什么 float 不正确?

javascript - 如何测试一个 float 是否为整数 "within machine precision"?