可能重复:
JavaScript 浮点数问题的优雅解决方法
我需要一个解决方法,因为 Javascript 由于它使用 1985 年的 IEEE 754 标准而无法可靠地进行浮动数学运算。基本上,我需要的是一种评估像 5+3*(2+8/6) 这样的表达式的方法。我正在考虑用字符串来做这件事,并为基本操作滚动我自己的函数(+-*/%),但我首先想知道你是否知道任何已经这样做的库。
可能重复:
JavaScript 浮点数问题的优雅解决方法
我需要一个解决方法,因为 Javascript 由于它使用 1985 年的 IEEE 754 标准而无法可靠地进行浮动数学运算。基本上,我需要的是一种评估像 5+3*(2+8/6) 这样的表达式的方法。我正在考虑用字符串来做这件事,并为基本操作滚动我自己的函数(+-*/%),但我首先想知道你是否知道任何已经这样做的库。
这取决于数字有多大。对于小数字(例如少于 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 的幂应该不难。如果您有大量数字,那么生活会更加困难(请参阅现有库)。