FileDocCategorySizeDatePackage
Float.javaAPI DocAndroid 1.5 API16940Wed May 06 22:41:04 BST 2009java.lang

Float

public final class Float extends Number implements Comparable
The wrapper for the primitive type {@code float}.
see
java.lang.Number
since
Android 1.0

Fields Summary
private static final long
serialVersionUID
private final float
value
The value which the receiver represents.
public static final float
MAX_VALUE
Constant for the maximum {@code float} value, (2 - 2-23) * 2127.
public static final float
MIN_VALUE
Constant for the minimum {@code float} value, 2-149.
public static final float
NaN
Constant for the Not-a-Number (NaN) value of the {@code float} type.
public static final float
POSITIVE_INFINITY
Constant for the Positive Infinity value of the {@code float} type.
public static final float
NEGATIVE_INFINITY
Constant for the Negative Infinity value of the {@code float} type.
public static final Class
TYPE
The {@link Class} object that represents the primitive type {@code float}.
public static final int
SIZE
Constant for the number of bits needed to represent a {@code float} in two's complement form.
Constructors Summary
public Float(float value)
Constructs a new {@code Float} with the specified primitive float value.

param
value the primitive float value to store in the new instance.
since
Android 1.0


                                               
       
        this.value = value;
    
public Float(double value)
Constructs a new {@code Float} with the specified primitive double value.

param
value the primitive double value to store in the new instance.
since
Android 1.0

        this.value = (float) value;
    
public Float(String string)
Constructs a new {@code Float} from the specified string.

param
string the string representation of a float value.
throws
NumberFormatException if {@code string} can not be decoded into a float value.
see
#parseFloat(String)
since
Android 1.0

        this(parseFloat(string));
    
Methods Summary
public bytebyteValue()

        return (byte) value;
    
public static intcompare(float float1, float float2)
Compares the two specified float values. There are two special cases:
  • {@code Float.NaN} is equal to {@code Float.NaN} and it is greater than any other float value, including {@code Float.POSITIVE_INFINITY};
  • +0.0f is greater than -0.0f

param
float1 the first value to compare.
param
float2 the second value to compare.
return
a negative value if {@code float1} is less than {@code float2}; 0 if {@code float1} and {@code float2} are equal; a positive value if {@code float1} is greater than {@code float2}.
since
Android 1.0

        int f1, f2;
        int NaNbits = Float.floatToIntBits(Float.NaN);
        if ((f1 = Float.floatToIntBits(float1)) == NaNbits) {
            if (Float.floatToIntBits(float2) == NaNbits) {
                return 0;
            }
            return 1;
        }
        if ((f2 = Float.floatToIntBits(float2)) == NaNbits) {
            return -1;
        }
        if (float1 == float2) {
            if (f1 == f2) {
                return 0;
            }
            // check for -0
            return f1 > f2 ? 1 : -1;
        }
        return float1 > float2 ? 1 : -1;
    
public intcompareTo(java.lang.Float object)
Compares this object to the specified float object to determine their relative order. There are two special cases:
  • {@code Float.NaN} is equal to {@code Float.NaN} and it is greater than any other float value, including {@code Float.POSITIVE_INFINITY};
  • +0.0f is greater than -0.0f

param
object the float object to compare this object to.
return
a negative value if the value of this float is less than the value of {@code object}; 0 if the value of this float and the value of {@code object} are equal; a positive value if the value of this float is greater than the value of {@code object}.
see
java.lang.Comparable
since
Android 1.0

        int f1, f2;
        int NaNbits = Float.floatToIntBits(Float.NaN);
        if ((f1 = Float.floatToIntBits(value)) == NaNbits) {
            if (Float.floatToIntBits(object.value) == NaNbits) {
                return 0;
            }
            return 1;
        }
        if ((f2 = Float.floatToIntBits(object.value)) == NaNbits) {
            return -1;
        }
        if (value == object.value) {
            if (f1 == f2) {
                return 0;
            }
            // check for -0
            return f1 > f2 ? 1 : -1;
        }
        return value > object.value ? 1 : -1;
    
public doubledoubleValue()

        return value;
    
public booleanequals(java.lang.Object object)
Compares this instance with the specified object and indicates if they are equal. In order to be equal, {@code object} must be an instance of {@code Float} and have the same float value as this object.

param
object the object to compare this float with.
return
{@code true} if the specified object is equal to this {@code Float}; {@code false} otherwise.
since
Android 1.0

        return (object == this)
                || (object instanceof Float)
                && (floatToIntBits(this.value) == floatToIntBits(((Float) object).value));
    
public static native intfloatToIntBits(float value)
Converts the specified float value to a binary representation conforming to the IEEE 754 floating-point single precision bit layout. All Not-a-Number (NaN) values are converted to a single NaN representation ({@code 0x7ff8000000000000L}).

param
value the float value to convert.
return
the IEEE 754 floating-point single precision representation of {@code value}.
see
#floatToRawIntBits(float)
see
#intBitsToFloat(int)
since
Android 1.0

public static native intfloatToRawIntBits(float value)
Converts the specified float value to a binary representation conforming to the IEEE 754 floating-point single precision bit layout. Not-a-Number (NaN) values are preserved.

param
value the float value to convert.
return
the IEEE 754 floating-point single precision representation of {@code value}.
see
#floatToIntBits(float)
see
#intBitsToFloat(int)
since
Android 1.0

public floatfloatValue()
Gets the primitive value of this float.

return
this object's primitive value.
since
Android 1.0

        return value;
    
public inthashCode()

        return floatToIntBits(value);
    
public static native floatintBitsToFloat(int bits)
Converts the specified IEEE 754 floating-point single precision bit pattern to a Java float value.

param
bits the IEEE 754 floating-point single precision representation of a float value.
return
the float value converted from {@code bits}.
see
#floatToIntBits(float)
see
#floatToRawIntBits(float)
since
Android 1.0

public intintValue()

        return (int) value;
    
public booleanisInfinite()
Indicates whether this object represents an infinite value.

return
{@code true} if the value of this float is positive or negative infinity; {@code false} otherwise.
since
Android 1.0

        return isInfinite(value);
    
public static booleanisInfinite(float f)
Indicates whether the specified float represents an infinite value.

param
f the float to check.
return
{@code true} if the value of {@code f} is positive or negative infinity; {@code false} otherwise.
since
Android 1.0

        return (f == POSITIVE_INFINITY) || (f == NEGATIVE_INFINITY);
    
public booleanisNaN()
Indicates whether this object is a Not-a-Number (NaN) value.

return
{@code true} if this float is Not-a-Number; {@code false} if it is a (potentially infinite) float number.
since
Android 1.0

        return isNaN(value);
    
public static booleanisNaN(float f)
Indicates whether the specified float is a Not-a-Number (NaN) value.

param
f the float value to check.
return
{@code true} if {@code f} is Not-a-Number; {@code false} if it is a (potentially infinite) float number.
since
Android 1.0

        return f != f;
    
public longlongValue()

        return (long) value;
    
public static floatparseFloat(java.lang.String string)
Parses the specified string as a float value.

param
string the string representation of a float value.
return
the primitive float value represented by {@code string}.
throws
NumberFormatException if {@code string} is {@code null}, has a length of zero or can not be parsed as a float value.
since
Android 1.0

        return org.apache.harmony.luni.util.FloatingPointParser
                .parseFloat(string);
    
public shortshortValue()

        return (short) value;
    
public static java.lang.StringtoHexString(float f)
Converts the specified float into its hexadecimal string representation.

param
f the float to convert.
return
the hexadecimal string representation of {@code f}.
since
Android 1.0

        /*
         * Reference: http://en.wikipedia.org/wiki/IEEE_754
         */
        if (f != f) {
            return "NaN"; //$NON-NLS-1$
        }
        if (f == POSITIVE_INFINITY) {
            return "Infinity"; //$NON-NLS-1$
        }
        if (f == NEGATIVE_INFINITY) {
            return "-Infinity"; //$NON-NLS-1$
        }

        int bitValue = floatToIntBits(f);

        boolean negative = (bitValue & 0x80000000) != 0;
        // mask exponent bits and shift down
        int exponent = (bitValue & 0x7f800000) >>> 23;
        // mask significand bits and shift up
        // significand is 23-bits, so we shift to treat it like 24-bits
        int significand = (bitValue & 0x007FFFFF) << 1;

        if (exponent == 0 && significand == 0) {
            return (negative ? "-0x0.0p0" : "0x0.0p0"); //$NON-NLS-1$ //$NON-NLS-2$
        }

        StringBuilder hexString = new StringBuilder(10);
        if (negative) {
            hexString.append("-0x"); //$NON-NLS-1$
        } else {
            hexString.append("0x"); //$NON-NLS-1$
        }

        if (exponent == 0) { // denormal (subnormal) value
            hexString.append("0."); //$NON-NLS-1$
            // significand is 23-bits, so there can be 6 hex digits
            int fractionDigits = 6;
            // remove trailing hex zeros, so Integer.toHexString() won't print
            // them
            while ((significand != 0) && ((significand & 0xF) == 0)) {
                significand >>>= 4;
                fractionDigits--;
            }
            // this assumes Integer.toHexString() returns lowercase characters
            String hexSignificand = Integer.toHexString(significand);

            // if there are digits left, then insert some '0' chars first
            if (significand != 0 && fractionDigits > hexSignificand.length()) {
                int digitDiff = fractionDigits - hexSignificand.length();
                while (digitDiff-- != 0) {
                    hexString.append('0");
                }
            }
            hexString.append(hexSignificand);
            hexString.append("p-126"); //$NON-NLS-1$
        } else { // normal value
            hexString.append("1."); //$NON-NLS-1$
            // significand is 23-bits, so there can be 6 hex digits
            int fractionDigits = 6;
            // remove trailing hex zeros, so Integer.toHexString() won't print
            // them
            while ((significand != 0) && ((significand & 0xF) == 0)) {
                significand >>>= 4;
                fractionDigits--;
            }
            // this assumes Integer.toHexString() returns lowercase characters
            String hexSignificand = Integer.toHexString(significand);

            // if there are digits left, then insert some '0' chars first
            if (significand != 0 && fractionDigits > hexSignificand.length()) {
                int digitDiff = fractionDigits - hexSignificand.length();
                while (digitDiff-- != 0) {
                    hexString.append('0");
                }
            }
            hexString.append(hexSignificand);
            hexString.append('p");
            // remove exponent's 'bias' and convert to a string
            hexString.append(Integer.toString(exponent - 127));
        }
        return hexString.toString();
    
public java.lang.StringtoString()

        return Float.toString(value);
    
public static java.lang.StringtoString(float f)
Returns a string containing a concise, human-readable description of the specified float value.

param
f the float to convert to a string.
return
a printable representation of {@code f}.
since
Android 1.0

        return org.apache.harmony.luni.util.NumberConverter.convert(f);
    
public static java.lang.FloatvalueOf(java.lang.String string)
Parses the specified string as a float value.

param
string the string representation of a float value.
return
a {@code Float} instance containing the float value represented by {@code string}.
throws
NumberFormatException if {@code string} is {@code null}, has a length of zero or can not be parsed as a float value.
see
#parseFloat(String)
since
Android 1.0

        return valueOf(parseFloat(string));
    
public static java.lang.FloatvalueOf(float f)
Returns a {@code Float} instance for the specified float value.

param
f the float value to store in the instance.
return
a {@code Float} instance containing {@code f}.
since
Android 1.0

        return new Float(f);