javascript - 纠正乘法破坏的 float 数学,可以吗?

标签 javascript math

我有多个计算由于 js 中的 float 数学问题而遇到麻烦。 我试图通过将等式的所有部分乘以 1000,然后将结果除以 1000 来解决这个问题。

var a = 16924.83,
    b = 16835.61;

var c = a-b; //outputs 89.22000000000116
var d = (1000*a-1000*b)/1000;  //outputs 89.22 and seems to be working correct

这样批改 float 数学题可以吗?

我读过 Is floating point math broken?

最佳答案

你应该在相乘后四舍五入:

var d = (Math.round(1000*a)-Math.round(1000*b))/1000;

仅仅乘法可能并不能解决问题。当你分配

var a = 16924.83;

它可能在内部将其表示为类似于 16924.8300001 的内容,因此当您乘以 1000 时,您将得到 16924830.001。您需要四舍五入才能去掉那部分。

关于javascript - 纠正乘法破坏的 float 数学,可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23523065/

相关文章:

javascript - 数组元素上的 Substr(如果不为空)

ruby - 从 Ruby 数组计算四分位数平均值?

javascript - Javascript 中的离散傅里叶变换

python - Kattis 的 D+J 编程挑战

c# - 弹道库

javascript - 简单的 JavaScript 添加问题

javascript - JavaScript 中的构造函数或对象继承

javascript - 异步 getter 的命名约定

javascript - 禁用 div 内的元素

javascript - Ionic ng-class 函数在应用程序中的所有 ng-click 上触发如何解决此问题