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:
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
- FloatValue:
- Signopt
NaN
- Signopt
Infinity
- Signopt FloatingPointLiteral
- Signopt HexFloatingPointLiteral
- SignedInteger
- HexFloatingPointLiteral:
- HexSignificand BinaryExponent FloatTypeSuffixopt
- HexSignificand:
- HexNumeral
- HexNumeral
.
0x
HexDigitsopt.
HexDigits0X
HexDigitsopt.
HexDigits
- BinaryExponent:
- BinaryExponentIndicator SignedInteger
- BinaryExponentIndicator:
p
P
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 java.text.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.
s | the string to be parsed. |
Float
object holding the value
represented by the String
argument.
NumberFormatException | if the string does not contain a parsable number. |
Diagram: Number