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