提问人:Arnauld 提问时间:12/23/2020 最后编辑:Arnauld 更新时间:12/24/2020 访问量:180
9**66 != n**66,节点 11.6.0 中的 n=9
9**66 != n**66 with n=9 in Node 11.6.0
问:
在寻找 Code Golf 挑战答案中使用的一些黑魔法时,我注意到 Node 11.6.0 中的以下行为:
// 1) exact result with BigInts
console.log(9n ** 66n); // 95500495(...)3841n
console.log(9n ** 66n % 79n); // 21n
// 2) approximation with a Number literal
console.log(9 ** 66); // 9.550049507968253e+62
console.log(9 ** 66 % 79); // 71
// 3) approximation with a variable
let n = 9;
console.log(n ** 66); // 9.550049507968251e+62
console.log(n ** 66 % 79); // 69
从本质上讲,with 不会导致与 相同的结果,这是我以前从未经历过的事情,尽管我在 Code Golf 上做了很多类似的奇怪事情。n ** 66
n = 9
9 ** 66
您可以在 Try it online!服务,在发布时安装了 Node v11.6.0。
我当前的本地 Node 版本是 12.13.1,在这两种情况下都一致给出。71
这是 Node 11.6.0 的已知问题吗?其他 Node 版本和/或其他 JS 引擎的行为方式是否相同?
补遗
下面是一个更简单的例子:9 ** 17
console.log(9n ** 17n); // 16677181699666569n
console.log(9 ** 17); // 16677181699666570
let n = 9;
console.log(n ** 17); // 16677181699666568
答: 暂无答案
评论
n = 9