在Ruby中怎么确定系统的最大整数?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (23)

我需要能够在Ruby中确定系统的最大整数。有人知道怎么做吗?

提问于
用户回答回答于

当Ruby溢出时,Ruby会自动将整数转换为一个大的整数类,所以对于它们的大小可以(实际上)没有限制。

如果正在寻找机器的大小,即64或32位,我在ruby-forum.com上找到了这个:

machine_bytes = ['foo'].pack('p').size
machine_bits = machine_bytes * 8
machine_max_signed = 2**(machine_bits-1) - 1
machine_max_unsigned = 2**machine_bits - 1

如果正在查找Fixnum对象的大小(小到足以存储在单个机器字中的整数),则可以调用0.size以获取字节数。我猜想它应该是32位版本上的4,但我现在无法测试。此外,最大的Fixnum显然是2**30 - 1(或2**62 - 1),因为一位用来标记为整数而不是对象引用。

用户回答回答于
FIXNUM_MAX = (2**(0.size * 8 -2) -1)
FIXNUM_MIN = -(2**(0.size * 8 -2))

扫码关注云+社区