gpt4 book ai didi

ruby - Ruby 中 Fixnum 和 Bignum 的最大值和最小值

转载 作者:数据小太阳 更新时间:2023-10-29 07:15:01 25 4
gpt4 key购买 nike

我想知道 Fixnum 和 Bignum 的范围。在Float中,我可以用Float::MAX和Float::MIN得到Float的范围。Fixnum 和 Bignum 中没有类似的常量。实现这一目标的最佳方法是什么?

最佳答案

忘记FixnumBignum .它们是私有(private)的内部实现细节。它们是优化。你应该忽略它们。你唯一应该关心的类是 Integer .

ISO Ruby Language Specification仅指定 Integer 类。它允许特定于实现的子类,但没有指定它们。

Fixnum 是一种优化,应该在实现内部进行,永远不应该暴露给程序员。想想 YARV 中的 flonum。你有没有注意到 flonums were introduced in YARV 2.0 ?他们所做的就是确定Float更快。但你永远看不到他们。这是应该的。

事实上,YARV 2.4 removes Fixnum and Bignum and will only have Integers in the future .出于向后兼容的原因,FixnumBignum 将作为 Integer 的别名保留一段时间,但类本身将会消失。

在 Ruby 中,Integer 没有最大值或最小值;它们是任意大小的整数。因此,不存在任何此类常量。

Fixnum 的大小限制(如果它们存在的话)取决于平台和实现。在 JRuby 上,Fixnum 总是 64 位的,在 YARV 上,它们在 64 位平台上是 63 位,在 32 位平台上是 31 位。在 Opal 上,Integer 被实现为 ECMAScript Number(实际上是 IEEE754 float ,因此仅对 53 位是准确的),以及 I don't think they even have Fixnums or Bignums .

关于ruby - Ruby 中 Fixnum 和 Bignum 的最大值和最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40034576/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com