当Float.valueOf工作正常时,Float.parseFloat抛出numberformat异常

时间:2016-10-29 10:31:39

标签: java android

我将3.5值传递给glb_value

         float sendValueFloat = Float.valueOf(glb_value);

以上工作正常

         float sendValueFloat = Float.parseFloat(glb_value);

但上面是抛出数字格式异常

任何人都可以解释为什么

4 个答案:

答案 0 :(得分:0)

parseFloat()方法(https://docs.oracle.com/javase/7/docs/api/java/lang/Float.html#parseFloat(java.lang.String)): -

  

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

     

返回:字符串参数表示的float值。

parse方法将string作为arguement并将其转换为Float对象并返回它。

https://docs.oracle.com/javase/7/docs/api/java/lang/Float.html#valueOf(float)

valueOf (float f)和 valueOf (String s): - 而valueOf用于将原始数据类型float或string arguement转换为包装类Float。它将float / string作为输入并返回Float类对象。

ParseFloat(String s)等于valueOf(String s),它们都返回以字符串作为输入的Float对象。唯一的区别是valueOf()方法有两个重载方法,一个接受float,另一个接受String。第一个用于将原始数据类型转换为包装类,而另一个等于valueOf(String s)

答案 1 :(得分:0)

您想要做的事情没有错误。我认为您必须在发送这两个函数之前调试glb_value

看下面我测试了你想做什么,一切都好: ideOne

这两者之间唯一不同的是Float.parseFloat()返回一个原始浮点数,而另一个返回浮点类中的一个对象。

答案 2 :(得分:0)

以下是Java 8中Float.valueOf(String)的实现:

public static Float valueOf(String s) throws NumberFormatException {
    return new Float(parseFloat(s));
}

我无法看到valueOf如何工作,而parseFloat没有...如果您将相同的字符串传递给每个人。

因此,您必须传递不同的字符串。再看看你的证据。

如果这没有帮助,那么使用调试器运行应用程序,设置断点并单步执行parseFloat调用以查看失败的原因。

答案 3 :(得分:0)

我发现这不可能,因为两个函数都使用 FloatingDecimal.parseFloat(s);

我建议您查看堆栈跟踪并将输入值转储为字节。也许你遇到编码问题,或者你认为你解析的价值不是你想的那个。

这是你提到的两个功能:

lotto=(2,3,16,48,56,1,28,33,55,56,10,16,38,43,63,23,49,57,64,67,16,30)
print(lotto)

第一个直接致电://1: public static float parseFloat(String s) throws NumberFormatException { return FloatingDecimal.parseFloat(s); } //2: public static Float valueOf(String s) throws NumberFormatException { return new Float(parseFloat(s)); }
第二个人打电话FloatingDecimal.parseFloat(s);

{ new Float(parseFloat(s)); };

这两个函数最终调用相同的public Float(float value) { this.value = value; } public static float parseFloat(String s) throws NumberFormatException { return FloatingDecimal.parseFloat(s); }