为什么JRuby不承认BigNums而Ruby呢?

时间:2009-02-11 17:46:53

标签: java ruby-on-rails ruby jruby bignum

如果我输入这个大整数:

puts 9997836544.class.to_s

并使用ruby 1.86进行编译,它预计会报告:

BigNum

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

Fixnum

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

1 个答案:

答案 0 :(得分:3)

找到此JRuby bug report

  

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

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