Javascript的表达式求解器

时间:2012-10-22 06:08:12

标签: javascript ieee-754

  

可能重复:
  Elegant workaround for JavaScript floating point number problem

我需要一个解决方法,因为它使用了1985年的IEEE 754标准,Javascript无法可靠地进行浮动数学运算。基本上,我需要的是一种评估表达式的方法,如5 + 3 *(2 + 8/6)。我正在考虑使用字符串并将自己的函数用于基本操作(+ - * /%),但我首先想知道是否有任何库已经执行此操作。

1 个答案:

答案 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的使用功率应该不那么难。如果你的数字很大,那么生活会更加困难(参见现有的图书馆)。