Почему JRuby не распознает BigNums, а Ruby -? - PullRequest
3 голосов
/ 11 февраля 2009

Если я наберу это большое целое число:

puts 9997836544.class.to_s

и скомпилируйте с ruby ​​1.86, он сообщает ожидаемо:

BigNum

в то время как JRuby (1.1.4 в Netbeans) сообщает удивительно:

Fixnum

Я думал, что в Java класс BigInteger соответствует классу BigNum в Ruby. Если это так, я ожидал бы, что JRuby и ruby ​​будут производить одинаковый вывод.

1 Ответ

3 голосов
/ 11 февраля 2009

Нашел Отчет об ошибке JRuby :

Похоже, что JRuby и MRI имеют разные пределы для разделения Fixnum и Bignum.
...
Итак, MRI использует 0x3fffffff как самый большой FixNum в 32-битной среде.
И JRuby всегда использует 64-битное значение: jruby -e 'p (0x7fffffffffffffff + 1).class' ---> Bignum.

Так что попробуйте большее число, и вы должны получить BigNum, как вы ожидаете.

...