行。我知道根据Java Docs:
parseFloat将返回NumberFormatException - 如果该字符串不包含可解析的float。
我认为parseFloat方法会查看第一个字符是否为数字,如果是,那么它将一直读取,直到找到一个字符然后返回该值,直到但不包括该字符作为Float。
因此,考虑到这一点,我试图执行以下操作并获取NumberFormatException。
float value;
value = Float.parseFloat("50C");
我希望它能以值= 50返回。
有人可以解释为什么上面的转换会返回NumberFormatException吗?我误解了parseFloat会做什么吗?
答案 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
f
,F
,d
,D
是允许的。
尝试:
value = Float.parseFloat("50f");
答案 2 :(得分:2)
问题是标准库无法将50C
解析为浮点数,因此异常。要使它成为浮点解析,你需要添加像F或f这样的字符,如50f或50F。