可能重复:
Elegant workaround for JavaScript floating point number problem
我需要一个解决方法,因为它使用了1985年的IEEE 754标准,Javascript无法可靠地进行浮动数学运算。基本上,我需要的是一种评估表达式的方法,如5 + 3 *(2 + 8/6)。我正在考虑使用字符串并将自己的函数用于基本操作(+ - * /%),但我首先想知道是否有任何库已经执行此操作。
答案 0 :(得分:0)
这取决于数字有多大。对于较小的数字(例如少于14个有效数字),舍入到可接受的精度可以完成工作。例如举个例子:
var n = 0.5 / 5 + 1 / 5; // 0.30000000000000004
var p = Math.pow(10, 14); // where 14 is calculated based on the first
// significant digit and its relationship to
// the decimal place
n = Math.round(n * p) / p; // 0.3
计算10的使用功率应该不那么难。如果你的数字很大,那么生活会更加困难(参见现有的图书馆)。