¿Por qué no reconoce JRuby bignums mientras que Rubí hace?
-
22-08-2019 - |
Pregunta
Si escribo esto entero grande:
puts 9997836544.class.to_s
y compilar con el rubí 1,86, se informa como era de esperar:
BigNum
mientras JRuby (1.1.4 en Netbeans) informa sorprendentemente:
Fixnum
pensé que tenía una clase de Java BigInteger para corresponder a la clase bignum en Ruby. Si es así, lo que habría esperado JRuby y el rubí para producir la misma salida.
Solución
Encontrados este JRuby informe de error :
Parece que JRuby y la RM tienen diferentes límites para separar las Fixnum y Bignum.
...
Por lo tanto, la resonancia magnética utiliza 0x3FFFFFFF como el mayor Fixnum en un entorno de 32 bits.
Y JRuby siempre utiliza el valor de 64 bits:.jruby -e 'p (0x7fffffffffffffff + 1).class'
---> Bignum
Así que trate de un número más grande y que debe obtener un número grande como se esperaba.