Float.parseFloat返回没有意义的NumberFormatException

时间:2015-11-10 06:21:55

标签: java numberformatexception parsefloat

行。我知道根据Java Docs:

parseFloat将返回NumberFormatException - 如果该字符串不包含可解析的float。

我认为parseFloat方法会查看第一个字符是否为数字,如果是,那么它将一直读取,直到找到一个字符然后返回该值,直到但不包括该字符作为Float。

因此,考虑到这一点,我试图执行以下操作并获取NumberFormatException。

float value;

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

我希望它能以值= 50返回。

有人可以解释为什么上面的转换会返回NumberFormatException吗?我误解了parseFloat会做什么吗?

3 个答案:

答案 0 :(得分:4)

根据Float上的Java 7文档:

  

AuthorsController GET #index loads all of the authors into @authors Failure/Error: expect(assigns(:authors)).to match_array([auth1, auth2]) expected collection contained: [#<Author id: 28, first_name: "Kellen", last_name: "Bosco", created_at: "2015-11-10 06:11:45", updated_at: "2015-11-10 06:11:45">, #<Author id: 29, first_name: "Axel", last_name: "Reinger", created_at: "2015-11-10 06:11:45", updated_at: "2015-11-10 06:11:45">] actual collection contained: [Authors from id: "1" to "29"]

     

返回一个初始化为由指定String表示的值的新float,由Float类的valueOf方法执行。

对于valueOf方法:

  

parseFloat(String s)

     

返回一个Float对象,其中包含由参数字符串s。

表示的float值

因此,如果传递给valueOf(String s)方法的字符串不代表浮点字符串,那么最终会得到parseFloat,因为它无法将其转换为浮点数。

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

答案 1 :(得分:2)

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

尝试:

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

答案 2 :(得分:2)

问题是标准库无法将50C解析为浮点数,因此异常。要使它成为浮点解析,你需要添加像F或f这样的字符,如50f或50F。