1

可能重复:
JavaScript 浮点数问题的优雅解决方法

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

4

1 回答 1

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 的幂应该不难。如果您有大量数字,那么生活会更加困难(请参阅现有库)。

于 2012-10-22T07:16:52.977 回答