我一直没能找到一个直接的答案。我检查了规范,但没有看到任何定义精度的内容。
Number.MAX_VALUE
1.7976931348623157e+308
a = 9007199254740992
a == a-1
false
a+1
9007199254740992
a+2
9007199254740994
a*a
8.112963841460668e+31
a*a == ((a*a)-1)
true
a*a == ((a*a)*a)
false
最佳答案
Math.pow( 2, 53 )
是最大的整数。之后你开始失去整数的精度。
你可以找到它here :
Significand precision: 53 bits (52 explicitly stored)
至于“小数”,无论其大小如何,您永远不能指望得到准确的结果。
0.1 + 0.2 === 0.30000000000000004
顺便说一句,如果您正在寻找解决上述问题的方法:
function round(num) {
return Math.round( num * 1e9 ) / 1e9;
}
round(0.1 + 0.2) === 0.3
关于javascript - 我们可以用来确保 Javascript 准确精度的最大数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11892461/