- Class Float
- Floating-point Equality, Equivalence, and Comparison
- Field Summary
- Constructor Summary
- Method Summary
- Methods declared in class java.lang.Object
- Field Details
- POSITIVE_INFINITY
- NEGATIVE_INFINITY
- NaN
- MAX_VALUE
- MIN_NORMAL
- MIN_VALUE
- SIZE
- PRECISION
- MAX_EXPONENT
- MIN_EXPONENT
- BYTES
- TYPE
- Constructor Details
- Float
- Float
- Float
- Method Details
- toString
- toHexString
- valueOf
- valueOf
- parseFloat
Class Float
The Float class wraps a value of primitive type float in an object. An object of type Float contains a single field whose type is float .
In addition, this class provides several methods for converting a float to a String and a String to a float , as well as other constants and methods useful when dealing with a float .
This is a value-based class; programmers should treat instances that are equal as interchangeable and should not use instances for synchronization, or unpredictable behavior may occur. For example, in a future release, synchronization may fail.
Floating-point Equality, Equivalence, and Comparison
The class java.lang.Double has a discussion of equality, equivalence, and comparison of floating-point values that is equally applicable to float values.
Field Summary
Constructor Summary
Method Summary
Returns an Optional containing the nominal descriptor for this instance, which is the instance itself.
Returns the float value closest to the numerical value of the argument, a floating-point binary16 value encoded in a short .
Returns a representation of the specified floating-point value according to the IEEE 754 floating-point «single format» bit layout.
Returns a representation of the specified floating-point value according to the IEEE 754 floating-point «single format» bit layout, preserving Not-a-Number (NaN) values.
Returns true if the argument is a finite floating-point value; returns false otherwise (for NaN and infinity arguments).
Returns a new float initialized to the value represented by the specified String , as performed by the valueOf method of class Float .
Methods declared in class java.lang.Object
Field Details
POSITIVE_INFINITY
A constant holding the positive infinity of type float . It is equal to the value returned by Float.intBitsToFloat(0x7f800000) .
NEGATIVE_INFINITY
A constant holding the negative infinity of type float . It is equal to the value returned by Float.intBitsToFloat(0xff800000) .
NaN
A constant holding a Not-a-Number (NaN) value of type float . It is equivalent to the value returned by Float.intBitsToFloat(0x7fc00000) .
MAX_VALUE
A constant holding the largest positive finite value of type float , (2-2 -23 )·2 127 . It is equal to the hexadecimal floating-point literal 0x1.fffffeP+127f and also equal to Float.intBitsToFloat(0x7f7fffff) .
MIN_NORMAL
A constant holding the smallest positive normal value of type float , 2 -126 . It is equal to the hexadecimal floating-point literal 0x1.0p-126f and also equal to Float.intBitsToFloat(0x00800000) .
MIN_VALUE
A constant holding the smallest positive nonzero value of type float , 2 -149 . It is equal to the hexadecimal floating-point literal 0x0.000002P-126f and also equal to Float.intBitsToFloat(0x1) .
SIZE
PRECISION
The number of bits in the significand of a float value. This is the parameter N in section 4.2.3 of The Java Language Specification .
MAX_EXPONENT
Maximum exponent a finite float variable may have. It is equal to the value returned by Math.getExponent(Float.MAX_VALUE) .
MIN_EXPONENT
Minimum exponent a normalized float variable may have. It is equal to the value returned by Math.getExponent(Float.MIN_NORMAL) .
BYTES
TYPE
Constructor Details
Float
It is rarely appropriate to use this constructor. The static factory valueOf(float) is generally a better choice, as it is likely to yield significantly better space and time performance.
Float
It is rarely appropriate to use this constructor. Instead, use the static factory method valueOf(float) method as follows: Float.valueOf((float)value) .
Float
It is rarely appropriate to use this constructor. Use parseFloat(String) to convert a string to a float primitive, or use valueOf(String) to convert a string to a Float object.
Constructs a newly allocated Float object that represents the floating-point value of type float represented by the string. The string is converted to a float value as if by the valueOf method.
Method Details
toString
- If the argument is NaN, the result is the string » NaN «.
- Otherwise, the result is a string that represents the sign and magnitude (absolute value) of the argument. If the sign is negative, the first character of the result is ‘ — ‘ ( ‘\u002D’ ); if the sign is positive, no sign character appears in the result. As for the magnitude m:
- If m is infinity, it is represented by the characters «Infinity» ; thus, positive infinity produces the result «Infinity» and negative infinity produces the result «-Infinity» .
- If m is zero, it is represented by the characters «0.0» ; thus, negative zero produces the result «-0.0» and positive zero produces the result «0.0» .
- Otherwise m is positive and finite. It is converted to a string in two stages:
- Selection of a decimal: A well-defined decimal dm is selected to represent m. This decimal is (almost always) the shortest one that rounds to m according to the round to nearest rounding policy of IEEE 754 floating-point arithmetic.
- Formatting as a string: The decimal dm is formatted as a string, either in plain or in computerized scientific notation, depending on its value.
A decimal is a number of the form s×10 i for some (unique) integers s > 0 and i such that s is not a multiple of 10. These integers are the significand and the exponent, respectively, of the decimal. The length of the decimal is the (unique) positive integer n meeting 10 n-1 ≤ s < 10 n .
- Let R be the set of all decimals that round to m according to the usual round to nearest rounding policy of IEEE 754 floating-point arithmetic.
- Let p be the minimal length over all decimals in R.
- When p ≥ 2, let T be the set of all decimals in R with length p. Otherwise, let T be the set of all decimals in R with length 1 or 2.
- Define dm as the decimal in T that is closest to m. Or if there are two such decimals in T, select the one with the even significand.
- Case -3 ≤ e< 0: dm is formatted as 0.0 … 0 s1…sn, where there are exactly -(n + i) zeroes between the decimal point and s1. For example, 123 × 10 -4 is formatted as 0.0123 .
- Case 0 ≤ e< 7:
- Subcase i ≥ 0: dm is formatted as s1…sn 0 … 0.0 , where there are exactly i zeroes between sn and the decimal point. For example, 123 × 10 2 is formatted as 12300.0 .
- Subcase i< 0: dm is formatted as s1… sn+i . sn+i+1… sn, where there are exactly —i digits to the right of the decimal point. For example, 123 × 10 -1 is formatted as 12.3 .
- Subcase n = 1: dm is formatted as s1 .0E e. For example, 1 × 10 23 is formatted as 1.0E23 .
- Subcase n > 1: dm is formatted as s1 . s2 …sn E e. For example, 123 × 10 -21 is formatted as 1.23E-19 .
To create localized string representations of a floating-point value, use subclasses of NumberFormat .
toHexString
- If the argument is NaN, the result is the string » NaN «.
- Otherwise, the result is a string that represents the sign and magnitude (absolute value) of the argument. If the sign is negative, the first character of the result is ‘ — ‘ ( ‘\u002D’ ); if the sign is positive, no sign character appears in the result. As for the magnitude m:
- If m is infinity, it is represented by the string «Infinity» ; thus, positive infinity produces the result «Infinity» and negative infinity produces the result «-Infinity» .
- If m is zero, it is represented by the string «0x0.0p0» ; thus, negative zero produces the result «-0x0.0p0» and positive zero produces the result «0x0.0p0» .
- If m is a float value with a normalized representation, substrings are used to represent the significand and exponent fields. The significand is represented by the characters «0x1.» followed by a lowercase hexadecimal representation of the rest of the significand as a fraction. Trailing zeros in the hexadecimal representation are removed unless all the digits are zero, in which case a single zero is used. Next, the exponent is represented by «p» followed by a decimal string of the unbiased exponent as if produced by a call to Integer.toString on the exponent value.
- If m is a float value with a subnormal representation, the significand is represented by the characters «0x0.» followed by a hexadecimal representation of the rest of the significand as a fraction. Trailing zeros in the hexadecimal representation are removed. Next, the exponent is represented by «p-126» . Note that there must be at least one nonzero digit in a subnormal significand.
valueOf
Returns a Float object holding the float value represented by the argument string s . If s is null , then a NullPointerException is thrown. Leading and trailing whitespace characters in s are ignored. Whitespace is removed as if by the String.trim() method; that is, both ASCII space and control characters are removed. The rest of s should constitute a FloatValue as described by the lexical syntax rules:
FloatValue: Signopt NaN Signopt Infinity Signopt FloatingPointLiteral Signopt HexFloatingPointLiteral SignedInteger HexFloatingPointLiteral: HexSignificand BinaryExponent FloatTypeSuffixopt HexSignificand: HexNumeral HexNumeral . 0x HexDigitsopt . HexDigits 0X HexDigitsopt . HexDigits BinaryExponent: BinaryExponentIndicator SignedInteger BinaryExponentIndicator: p P
where Sign, FloatingPointLiteral, HexNumeral, HexDigits, SignedInteger and FloatTypeSuffix are as defined in the lexical structure sections of The Java Language Specification , except that underscores are not accepted between digits. If s does not have the form of a FloatValue, then a NumberFormatException is thrown. Otherwise, s is regarded as representing an exact decimal value in the usual «computerized scientific notation» or as an exact hexadecimal value; this exact numerical value is then conceptually converted to an «infinitely precise» binary value that is then rounded to type float by the usual round-to-nearest rule of IEEE 754 floating-point arithmetic, which includes preserving the sign of a zero value. Note that the round-to-nearest rule also implies overflow and underflow behaviour; if the exact value of s is large enough in magnitude (greater than or equal to ( MAX_VALUE + ulp(MAX_VALUE) /2), rounding to float will result in an infinity and if the exact value of s is small enough in magnitude (less than or equal to MIN_VALUE /2), rounding to float will result in a zero. Finally, after rounding a Float object representing this float value is returned. To interpret localized string representations of a floating-point value, use subclasses of NumberFormat . Note that trailing format specifiers, specifiers that determine the type of a floating-point literal ( 1.0f is a float value; 1.0d is a double value), do not influence the results of this method. In other words, the numerical value of the input string is converted directly to the target floating-point type. In general, the two-step sequence of conversions, string to double followed by double to float , is not equivalent to converting a string directly to float . For example, if first converted to an intermediate double and then to float , the string
«1.00000017881393421514957253748434595763683319091796875001d»
results in the float value 1.0000002f ; if the string is converted directly to float , 1.0000001f results. To avoid calling this method on an invalid string and having a NumberFormatException be thrown, the documentation for Double.valueOf lists a regular expression which can be used to screen the input.valueOf
Returns a Float instance representing the specified float value. If a new Float instance is not required, this method should generally be used in preference to the constructor Float(float) , as this method is likely to yield significantly better space and time performance by caching frequently requested values.
parseFloat
Returns a new float initialized to the value represented by the specified String , as performed by the valueOf method of class Float .