JavaScript Number.toString 方法在阈值后会失去准确性吗?



以下内容的输出:

let x = 10**23;
console.log(x.toString(16))

出来152d02c7e14af6000000实际上是计算99999999999999991611392而不是10**23.有趣的是,以下内容无法计算false

let x = 10**23;
console.log(x==parseInt(x.toString(16),16))

我在这里弄错了什么吗?

JavaScript 数字是浮点数,它们越大越失去精度。当您超过Number.MAX_SAFE_INTEGER(即 253– 1)时,精度变为>1。

这也意味着像10**23 === (1**23 - 123)这样的东西评估为true.

最新更新