Ruby获得最大整数大小值

时间:2017-12-19 19:15:16

标签: java ruby equivalent

Java Integer.MAX_VALUE?的Ruby等价物是什么。希望本地人。

亚军:如果没有等效,我需要为Time对象设置它,所以不是硬编码整数2116-02-20的最大日期,是否有一个系统常量可以用于此?

1 个答案:

答案 0 :(得分:3)

整数没有最大值,它们会自动转换为“bignum”表示:

1 << 64
# => 18446744073709551616
(1 << 64) + 1
# => 18446744073709551617

除了记忆之外,真的没有限制:

1 << (1 << 16)
# => 20035299304...(thousands of digits)...05719156736

至于时间,它同样没有界限,所以现在你可以在宇宙热死之后很好地表达时间,如果你真的想要:

Time.at(1<<128)
# => 10783118943836478994022445751222-08-06 04:04:16 -0400

这曾经被限制在通常的+/- 21亿范围内,受2038 problem的限制,但自Ruby~1.9以来情况并非如此。除了从Windows的角度来看,我不确定2116因素在哪里。

如果你想知道可以用“原生”整数表示的最大/最小值,那么这取决于平台。 32位和64位二进制文​​件具有不同的限制。