返回保存用参数字符串 s
表示的 float
值的 float
对象。
如果 s
为 null
,则抛出 nullpointerexception
异常。
忽略 s
中的前导空白字符和尾部空白字符。就像调用 string.trim()
方法那样移除空白;也就是说,ascii 空格和控制字符都要移除。s
的其余部分应该根据词法语法规则描述构成 floatvalue:
- 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
其中,sign、floatingpointliteral、hexnumeral、hexdigits、signedinteger 和 floattypesuffix 与 java language specification 的词法结构部分中的定义相同。如果 s
的表示形式不是 floatvalue,则抛出 numberformatexception
。否则,可以认为 s
表示的是常用“计算机科学记数法”表示的精确十进制值,或者是一个精确的十六进制值;在概念上,这个精确的数值被转换一个“无限精确的”二进制值,然后根据常用 ieee 754 浮点算法的“舍入为最接近的数”规则将该值舍入为 float
类型,其中包括保留 0 值的符号。最后,返回表示这个 float
值的 float
对象。
要解释浮点值的本地化字符串表示形式,请使用 numberformat
的子类。
注意,尾部格式说明符、确定浮点字面值类型的说明符(1.0f
是一个 float
值;1.0d
是一个 double
值)不会 影响此方法的结果。换句话说,输入字符串的数值被直接转换为目标浮点类型。通常,分两步的转换(先将字符串转换为 double
类型,然后将 double
类型转换为 float
类型)不 同于直接将字符串转换为 float
类型。例如,如果首先转换为中间类型 double
,然后再转换为 float
类型,则字符串
"1.00000017881393421514957253748434595763683319091796875001d"
将得到 float
值 1.0000002f
;如果直接将字符串转换为 float
值,则结果将是 1.0000001f
。
为了避免对无效字符串调用此方法并导致抛出 numberformatexception
,double.valueof
的文档中列出了一个正则表达式,可以用该表达式在屏幕上显示输入。
- 参数:
s
- 要解析的字符串。
- 返回:
- 保存用
string
参数表示的值的 float
对象。
- 抛出:
numberformatexception
- 如果字符串不包含可解析的数字。