Tuesday, May 5, 2009

JRuby Numbers and Their Corresponding Java Numeric Object Types

I was curious how a number in Ruby code would translate into a Java class so I tried it out and here are the results, using JRuby 1.2.0 and Java 1.5.

Note that if you really want to send a specific Java class type in, use something like: Java::JavaLang::Integer.new(20)

For more info see:
* http://wiki.jruby.org/wiki/Calling_Java_from_JRuby

   Ruby       Java
       -128        -128 java.lang.Byte
       -128        -128 java.lang.Float
       -128        -128 java.lang.Float
       -128        -128 java.lang.Float
-128.555556  -128.55556 java.lang.Float
       -129        -129 java.lang.Short
       -129        -129 java.lang.Float
       -129        -129 java.lang.Float
       -129        -129 java.lang.Float
-129.555556  -129.55556 java.lang.Float
-2147483648 -2147483648 java.lang.Integer
-2147483648   -2.15E+09 java.lang.Float
-2147483648   -2.15E+09 java.lang.Float
-2147483648   -2.15E+09 java.lang.Float
-2147483649   -2.15E+09 java.lang.Float
-2147483649 -2147483649 java.lang.Long
-2147483649   -2.15E+09 java.lang.Float
-2147483649   -2.15E+09 java.lang.Float
-2147483649   -2.15E+09 java.lang.Float
-2147483650   -2.15E+09 java.lang.Float
     -32768      -32768 java.lang.Short
     -32768      -32768 java.lang.Float
     -32768      -32768 java.lang.Float
     -32768      -32768 java.lang.Float
-32768.5556  -32768.555 java.lang.Float
     -32769      -32769 java.lang.Integer
     -32769      -32769 java.lang.Float
     -32769      -32769 java.lang.Float
     -32769      -32769 java.lang.Float
-32769.5556  -32769.555 java.lang.Float
-9.2234E+18 -9.2234E+18 java.math.BigInteger
-9.2234E+18   -9.22E+18 java.lang.Float
-9.2234E+18   -9.22E+18 java.lang.Float
-9.2234E+18   -9.22E+18 java.lang.Float
-9.2234E+18   -9.22E+18 java.lang.Float
-9.2234E+18 -9.2234E+18 java.math.BigInteger
-9.2234E+18   -9.22E+18 java.lang.Float
-9.2234E+18   -9.22E+18 java.lang.Float
-9.2234E+18   -9.22E+18 java.lang.Float
-9.2234E+18   -9.22E+18 java.lang.Float
          0           0 java.lang.Byte
          0           0 java.lang.Float
          0           0 java.lang.Float
 0.00000001    1.00E-08 java.lang.Float
0.555555556   0.5555556 java.lang.Float
        127         127 java.lang.Byte
        128         128 java.lang.Short
 2147483647  2147483647 java.lang.Integer
 2147483648  2147483648 java.lang.Long
      32767       32767 java.lang.Short
      32768       32768 java.lang.Integer
9.22337E+18 9.22337E+18 java.lang.Long
9.22337E+18 9.22337E+18 java.math.BigInteger

No comments: