3

如果我输入这个大整数:

puts 9997836544.class.to_s

并用 ruby​​ 1.86 编译,它预期会报告:

BigNum

而 JRuby(Netbeans 中的 1.1.4)令人惊讶地报告:

Fixnum

我认为 Java 有一个 BigInteger 类来对应 Ruby 中的 BigNum 类。如果是这样,我会期望 JRuby 和 ruby​​ 产生相同的输出。

4

1 回答 1

3

发现这个JRuby 错误报告

似乎 JRuby 和 MRI 对区分 Fixnum 和 Bignum 有不同的限制。
...
所以,MRI 使用 0x3fffffff 作为 32 位环境下的最大 FixNum。
而 JRuby总是使用 64 位值:jruby -e 'p (0x7fffffffffffffff + 1).class'---> Bignum。

所以尝试一个更大的数字,你应该得到一个如你所愿的 BigNum。

于 2009-02-11T20:25:42.643 回答