我有多个计算由于 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 数学题可以吗?
最佳答案
你应该在相乘后四舍五入:
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/