我可以安全地使用 javascript 中的数字类型进行 2 位小数的计算吗?
Can I safely use the Number type in javascript for calculations with 2 decimal places?
我知道某些数字会与原始值略有不同。
- 例如。
0.1 + 0.2
-> 0.30000000000000004
.
但如果我这样做 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
这样的浮点数
我建议使用不同的方法,例如:
关于该主题的更多信息:
How to round to at most 2 decimal places, if necessary?
How to format a float in javascript?
我知道某些数字会与原始值略有不同。
- 例如。
0.1 + 0.2
->0.30000000000000004
.
但如果我这样做 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
我建议使用不同的方法,例如:
关于该主题的更多信息:
How to round to at most 2 decimal places, if necessary?
How to format a float in javascript?