如果有足够的时间,这个循环会结束吗?
for (let i = 0; 1 / i > 0; i++) {} // js code [0]
我猜它会在 i
达到 Number.POSITIVE_INFINITY
但不知道如何测试时发生。
编辑:
for (let i = 0; 1 / i > 0; i += k) {} // js code [1]
使 js 代码 [1] 完成的最小正数
k
是多少? (至少k = 1e304
会)假设问题 1 的答案是
K
,是否任何大于K
的数字都能保证完成 js 代码 [1]?
最佳答案
不,它永远不会完成,因为在高数字时,数字精度会失败。例如,将 1
添加到 1e16
会得到一个也等于 1e16
的数字 - 超过某个点,它将永远不会继续:
console.log((1e16 + 1) === 1e16);
那个点是 9007199254740992
。 Javascript 的 MAX_SAFE_INTEGER
是 9007199254740991
。将 9007199254740991
加一得到 9007199254740992
,但将 9007199254740992
加一得到相同的数字,9007199254740992
:
console.log(9007199254740991 + 1 === 9007199254740992);
console.log(9007199254740992 + 1 === 9007199254740992);
您在 1.7e308
附近到达Infinity
。
关于javascript - js `Number` 类型加起来等于无穷大吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52789436/