Pourquoi ne pas reconnaître JRuby bignums tout fait Ruby?
-
22-08-2019 - |
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.
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.