我可以安全地使用 javascript 中的数字类型进行 2 位小数的计算吗?

Can I safely use the Number type in javascript for calculations with 2 decimal places?

我知道某些数字会与原始值略有不同。

但如果我这样做 Math.round(0.30000000000000004 * 100) / 100,我会得到正确答案 -> 0.3

我 运行 进行了 Javascript 测试,发现结果至少会准确到 1e+10

这样做有什么注意事项吗?

如果我每次计算后都使用Math.round(result * 100) / 100,我能确定结果是准确的吗?

我打算做的唯一计算是加法和乘法,所有数字都只有 2 位小数,正如 Math.round(n * 100) / 100 确认的那样。

我不需要关于 00 的准确数字。

我能确定我的结果精确到最接近的美分吗?

您在使用 Math.round(n * 100) / 100 时可能会遇到一些错误。 它不会总是给出您预期的结果,例如:

console.log(Math.round(0.145*100)/100)

预期结果为 0.15。它发生是因为有一些像 0.145 * 100 = 14.499999999999998

这样的浮点数

我建议使用不同的方法,例如:

expected-round

Number.EPSILON

关于该主题的更多信息:

How to round to at most 2 decimal places, if necessary?

How to format a float in javascript?