Float.parseFloat returns 没有意义的 NumberFormatException

Float.parseFloat returns NumberFormatException that does not make sense

好的。我知道根据 Java 文档:

parseFloat 将 return NumberFormatException - 如果字符串不包含可解析的浮点数。

我认为 parseFloat 方法会查看第一个字符是否为数字,如果是则它将读取直到找到一个字符,然后 return 值直到但不包括该字符一个浮点数。

考虑到这一点,我正在尝试执行以下操作并获得 NumberFormatException。

float value;

value = Float.parseFloat("50C");

我希望它 return 的值为 50。

有人可以解释为什么上面的转换会 return 一个 NumberFormatException 吗?我是不是误解了 parseFloat 会做什么?

50C 不是可解析的 float,仅允许 fFdD

尝试:

value = Float.parseFloat("50f");

问题是标准库无法将 50C 解析为浮点数,因此出现异常。要使其成为可解析的浮点数,您需要添加 F 或 f 之类的字符,例如 50f 或 50F。

根据 Java 7 篇有关 Float 的文档:

parseFloat(String s)

Returns a new float initialized to the value represented by the specified String, as performed by the valueOf method of class Float.

对于 valueOf 方法:

valueOf(String s)

Returns a Float object holding the float value represented by the argument string s.

因此,如果传递给 parseFloat 方法的字符串不代表浮点数字符串,您最终将得到 NumberFormatException,因为它无法将其转换为浮点数。

来源:http://docs.oracle.com/javase/7/docs/api/java/lang/Float.html