don*_* jy 3 javascript floating-point
如果有足够的时间,这个循环会完成吗?
for (let i = 0; 1 / i > 0; i++) {} // js code [0]
Run Code Online (Sandbox Code Playgroud)
我想它会i到达Number.POSITIVE_INFINITY但不知道如何测试.
编辑:
for (let i = 0; 1 / i > 0; i += k) {} // js code [1]
Run Code Online (Sandbox Code Playgroud)
k使js代码[1]完成的最小正数是多少?(至少k = 1e304会)
让我们假设答案是问题1 K,是否有任何数字大于K保证js代码完成[1]?
不,它永远不会完成,因为在高数字时,数字精度会失败.例如,添加1到1e16了一些这也等于结果1e16-过去的某一个点,它永远不会进步:
console.log((1e16 + 1) === 1e16);Run Code Online (Sandbox Code Playgroud)
那一点是9007199254740992.Javascript MAX_SAFE_INTEGER是9007199254740991.在9007199254740991结果中添加一个9007199254740992,但在结果中添加一个9007199254740992相同的数字,9007199254740992:
console.log(9007199254740991 + 1 === 9007199254740992);
console.log(9007199254740992 + 1 === 9007199254740992);Run Code Online (Sandbox Code Playgroud)
你Infinity到处走走1.7e308.
| 归档时间: |
|
| 查看次数: |
62 次 |
| 最近记录: |