【问题标题】:Does BigInt represent number in 64-bit?BigInt 是否代表 64 位的数字?
【发布时间】:2021-10-15 18:01:00
【问题描述】:

Number.MAX_VALUE 的值是否仅限于数据类型 Number 的数字? BigInt 的上界不一样吗?

还有一个问题... BigInt 是否表示 64 位格式 IEEE-754 的数字? 由于 BigInt 格式代表的是大数,那么 BigInt 值是否可以占用超过 64 位的空间?

【问题讨论】:

  • MDN 上的第一句:"BigInt 是一个内置对象,其构造函数返回一个 bigint 原语 - 也称为 BigInt 值,或者有时只是一个 @987654328 @ - 表示大于2^53 - 1 (Number.MAX_SAFE_INTEGER) 的整数,这是 JavaScript 可以用数字原语表示的最大数(或数值)。可以使用 BigInt 值对于任意大的整数。”
  • "在 JavaScript 中,BigInt 是一种数值数据类型,可以在arbitrary precision format 中表示整数。"
  • BIgInt 没有指定上限,详情请参考stackoverflow.com/questions/53335545/…
  • @Andreas:MDN 的措辞令人惊讶地不准确:“JavaScript 可以用数字原语表示的最大数字”是Number.MAX_VALUE,大约是 2^1024。 MAX_SAFE_INTEGER 是最大的整数(或“整数”)数,仍可以增加1 而不会丢失精度。 MAX_SAFE_INTEGER 和 MAX_VALUE 之间的数值将被四舍五入(到 53 个有效位)。

标签: javascript numbers bigint


【解决方案1】:

BigInt 的上限不一样吗?

不,BigInts 没有指定的限制。也就是说,实际上,总会有实现定义的限制(就像字符串、数组等一样)。目前,Chrome 允许 10 亿位,而 Firefox 允许 100 万位。预计大多数实际发生的 BigInts 不会遇到此限制。

BigInt 是否表示 64 位格式 IEEE-754 的数字?

不,IEEE-754 是一种浮点格式,因此它对具有整数值的 BigInts 没有用处。此外,它们具有“无限”精度。

BigInt 值能否占用超过 64 位的空间?

是的,BigInts 可以消耗比 64 位更多的数据。例如,具有一千位的 BigInt(例如 2n ** 999n)将需要(大约)一千位内存(可能向上舍入到下一个 4 或 8 字节的倍数,外加一个小对象头,具体取决于引擎)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-06
    • 1970-01-01
    • 2012-03-27
    • 2011-03-07
    • 2013-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多