package java.lang; /** * Minimal Float implementation that supports * floatToIntBits and intBitsToFloat * * @author Lawrie Griffiths */ public final class Float { private Float() { } /** * Returns the bit represention of a single-float value. * The result is a representation of the floating-point argument * according to the IEEE 754 floating-point "single * precision" bit layout. * * In all cases, the result is an integer that, when given to the * {@link #intBitsToFloat(int)} method, will produce a floating-point * value equal to the argument to floatToRawIntBits. * * @param value a floating-point number. * @return the bits that represent the floating-point number. */ public static native int floatToIntBits(float value); /** * Returns the single-float corresponding to a given bit represention. * The argument is considered to be a representation of a * floating-point value according to the IEEE 754 floating-point * "single precision" bit layout. *

* If the argument is 0x7f800000, the result is positive * infinity. *

* If the argument is 0xff800000, the result is negative * infinity. *

* If the argument is any value in the range 0x7f800001 * through 0x7fffffff or in the range * 0xff800001 through 0xffffffff, the result is * NaN. All IEEE 754 NaN values of type float are, in effect, * lumped together by the Java programming language into a single * float value called NaN. Distinct values of NaN are only * accessible by use of the Float.floatToRawIntBits method. *

* In all other cases, let s, e, and m be three * values that can be computed from the argument: *

     * int s = ((bits >> 31) == 0) ? 1 : -1;
     * int e = ((bits >> 23) & 0xff);
     * int m = (e == 0) ?
     *                 (bits & 0x7fffff) << 1 :
     *                 (bits & 0x7fffff) | 0x800000;
     * 
* Then the floating-point result equals the value of the mathematical * expression s·m·2e-150. * * @param bits an integer. * @return the single-format floating-point value with the same bit * pattern. */ public static native float intBitsToFloat(int value); }