Question

Si je tape ce grand entier:

puts 9997836544.class.to_s

et compiler avec rubis 1,86, il rapporte expectedly:

BigNum

tandis que JRuby (dans Netbeans 1.1.4) rapporte de façon surprenante:

Fixnum

Je pensais que Java avait une classe BigInteger pour correspondre à la classe BigNum en Ruby. Si oui, je me serais attendu à JRuby et rubis pour produire la même sortie.

Était-ce utile?

La solution

Nous avons trouvé cet JRuby bug rapport :

  

Il semble que JRuby et l'IRM ont des limites différentes pour séparer les Fixnum et Bignum.
  ...
  Ainsi, l'IRM utilise 0x3FFFFFFF comme le plus grand FIXNUM dans un environnement 32 bits.
  Et JRuby toujours utilise la valeur de 64 bits. jruby -e 'p (0x7fffffffffffffff + 1).class' ---> Bignum

Donc, essayez un plus grand nombre et vous devriez obtenir une BigNum que vous attendez.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top