【发布时间】:2021-01-08 05:48:39
【问题描述】:
遇到一个问题
有人知道为什么会得到这样的结果吗?
let x = 4153000000000000000 + 99
console.log(x) // 4153000000000000000
let y = 4153000000000000000 + 990
console.log(y) // 4153000000000001000
let z = 4153000000000000000 + 9900
console.log(z) // 4153000000000009700
【问题讨论】:
-
console.log(Number.MAX_SAFE_INTEGER)JavaScript 数字不能代表那么大的值。 -
好的,但是为什么它代表 +990 或 +9900 而为什么不代表 +99 呢?
-
@RobbyCornelissen 如果是这样,那么它应该得到相同的结果
-
不,因为 JavaScript 数字是浮点类型。它们的存储方式使得可以表示 所有 整数到
MAX_SAFE_INTEGER,但也可以表示超出该范围的 一些 整数。
标签: javascript numbers integer biginteger