function a (n){return (1+1/n) ** n }
为什么
a(9007199254740991) === 7.389056098930647
但如果n> 9007199254740991函数将返回1?
https://zh.wikipedia.org/wiki/E_(%E6%95%B0%E5%AD%A6%E5%B8%B8%E6%95%B0)
答案 0 :(得分:0)
9007199254740991
是ECMAScript计算中使用的最大安全整数(也预定义为常量Number.MAX_SAFE_INTEGER
)。
这是JavaScript数学的限制,对双精度浮点数进行计算。如果超过此常量,则任何时候都可能出现不可预测的结果,例如9007199254740992 == 9007199254740993
评估为true
。