Javascript 最大整数

标签 javascript biginteger bigint

我认为 javascript 的最大整数值为 2^53,但是当我执行以下操作时:

 parseInt(Math.pow(2, 53)) + 10

我正确地得到了 9007199254741002

 (= 9007199254740992 + 10)

这是为什么呢?我只想在数字大于或等于允许的最大整数时使用 bigint.js 库。

最佳答案

9007199254740992 是在您开始遇到精度丢失问题之前 JavaScript 中的最大整数值。考虑以下内容:

> Math.pow(2, 53) + 1
9007199254740992
> Math.pow(2, 53) + 2
9007199254740994
> Math.pow(2, 53) + 3
9007199254740996
> Math.pow(2, 53) + 4

可以看出,结果值并非在所有情况下都准确。这是 float 的限制,因为只有 53 位专用于系数。一旦超过 53 位加一个符号位可以表示的范围,浮点表示将随着值的增加而变得越来越命中或未命中。

关于Javascript 最大整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22838588/

相关文章:

javascript - 需要帮助理解此代码中事件循环的行为

assembly - 将格式化为 ASCII 的大十进制数(128 位)转换为二进制(十六进制)

go - 如何使用 Math/Big int Golang

assembly - 在 8086 中使用 16 位寄存器操作 32 位数字

javascript - 输入时提交表格

php - Javascript 代码未运行 onbeforeunload

javascript - 如何为 Canvas 中的现有数据 URI 设置填充样式(纹理)

java - 在 Java 中如何将二进制数转换为 BigInteger?

Java probablePrime 性能

java - 在不损失精度的情况下将 long 或 BigInteger 乘以 double