如果我输入这个大整数:
puts 9997836544.class.to_s
并用 ruby 1.86 编译,它预期会报告:
BigNum
而 JRuby(Netbeans 中的 1.1.4)令人惊讶地报告:
Fixnum
我认为 Java 有一个 BigInteger 类来对应 Ruby 中的 BigNum 类。如果是这样,我会期望 JRuby 和 ruby 产生相同的输出。
如果我输入这个大整数:
puts 9997836544.class.to_s
并用 ruby 1.86 编译,它预期会报告:
BigNum
而 JRuby(Netbeans 中的 1.1.4)令人惊讶地报告:
Fixnum
我认为 Java 有一个 BigInteger 类来对应 Ruby 中的 BigNum 类。如果是这样,我会期望 JRuby 和 ruby 产生相同的输出。
发现这个JRuby 错误报告:
似乎 JRuby 和 MRI 对区分 Fixnum 和 Bignum 有不同的限制。
...
所以,MRI 使用 0x3fffffff 作为 32 位环境下的最大 FixNum。
而 JRuby总是使用 64 位值:jruby -e 'p (0x7fffffffffffffff + 1).class'
---> Bignum。
所以尝试一个更大的数字,你应该得到一个如你所愿的 BigNum。