是什么让长整数数值(16 个以上字符)在 JavaScript 中发生变异?
What makes long integer numerical values (16+ chars) to mutate in JavaScript?
有没有人可以解释为什么 JavaScript 会发生以下情况?
let x212 = 154688977320418212;
// returns 154688977320418200
let x230 = 154688977320418230;
// returns 154688977320418240
let x256 = 154688977320418256;
// returns 154688977320418240
let x257 = 154688977320418257;
// returns 154688977320418270
这是否意味着如果不将其转换为字符串就无法存储长整数值?
在JavaScript中,所有数字都是64位浮点数。
尾数的大小约为 53 位,这意味着您的数字 154688977320418257
不能完全 表示为 JavaScript数字。您看到的是一个近似值,因为它是一个大于 MAX_SAFE_INTEGER
的数字(即 9007199254740991)。
如果你真的需要大数字,你可以使用像 https://github.com/peterolson/BigInteger.js.
这样的库
有没有人可以解释为什么 JavaScript 会发生以下情况?
let x212 = 154688977320418212;
// returns 154688977320418200
let x230 = 154688977320418230;
// returns 154688977320418240
let x256 = 154688977320418256;
// returns 154688977320418240
let x257 = 154688977320418257;
// returns 154688977320418270
这是否意味着如果不将其转换为字符串就无法存储长整数值?
在JavaScript中,所有数字都是64位浮点数。
尾数的大小约为 53 位,这意味着您的数字 154688977320418257
不能完全 表示为 JavaScript数字。您看到的是一个近似值,因为它是一个大于 MAX_SAFE_INTEGER
的数字(即 9007199254740991)。
如果你真的需要大数字,你可以使用像 https://github.com/peterolson/BigInteger.js.
这样的库