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
,仅允许 f
、F
、d
、D
。
尝试:
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
好的。我知道根据 Java 文档:
parseFloat 将 return NumberFormatException - 如果字符串不包含可解析的浮点数。
我认为 parseFloat 方法会查看第一个字符是否为数字,如果是则它将读取直到找到一个字符,然后 return 值直到但不包括该字符一个浮点数。
考虑到这一点,我正在尝试执行以下操作并获得 NumberFormatException。
float value;
value = Float.parseFloat("50C");
我希望它 return 的值为 50。
有人可以解释为什么上面的转换会 return 一个 NumberFormatException 吗?我是不是误解了 parseFloat 会做什么?
50C
不是可解析的 float
,仅允许 f
、F
、d
、D
。
尝试:
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