Java Float.parseFloat在Float.valueOf working fine时引发numberformat异常

Java Float.parseFloat在Float.valueOf working fine时引发numberformat异常,java,android,Java,Android,我将3.5的值传递给glb_值 float sendValueFloat = Float.valueOf(glb_value); 以上工作正常 float sendValueFloat = Float.parseFloat(glb_value); 但上面是抛出numberformat异常 谁能解释一下为什么parseFloat()method():- 返回初始化为 指定的字符串,由类Float的valueOf方法执行 返回:字符串参数表示的浮点值 pars

我将3.5的值传递给glb_值

         float sendValueFloat = Float.valueOf(glb_value);
以上工作正常

         float sendValueFloat = Float.parseFloat(glb_value);
但上面是抛出numberformat异常

谁能解释一下为什么

parseFloat()method():-

返回初始化为 指定的字符串,由类Float的valueOf方法执行

返回:字符串参数表示的浮点值

parse方法将字符串作为参数,并将其转换为Float对象并返回它

值的(浮点f)和值的(字符串s):- 而valueOf用于将原始数据类型float或字符串参数转换为包装类float。它接受float/string作为输入并返回float类对象


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

您要执行的操作没有错误。我认为在发送到这两个函数之前,必须调试
glb_值

看下面,我测试了你想做的事情,一切都正常:


这两者之间唯一的区别是
Float.parseFloat()
返回一个基本浮点,而另一个从Float类返回一个对象。

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

public static Float valueOf(String s) throws NumberFormatException {
    return new Float(parseFloat(s));
}
如您所见,
valueOf
调用
parseFloat
来解析字符串参数。不可能
valueOf
起作用,而
parseFloat
不起作用。。。如果将相同的字符串传递给每个字符串

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


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

我发现这是不可能的,因为这两个函数都使用FloatingDecimal.parseFloat

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

以下是您提到的两个功能:

//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)
第二个具有调用
{newfloat(parseFloat(s));}

public Float(float value) {
    this.value = value;
}

public static float parseFloat(String s) throws NumberFormatException {
    return FloatingDecimal.parseFloat(s);
}

两个函数最终调用相同的
FloatingDecimal.parseFloat

您是否检查了硬编码3.5的功能,以查看问题是否得到解决?您能否检查这两种方法的实现情况?只是问一个愚蠢的问题:您是通过3.5还是“3.5”?(我猜您是将其作为字符串传递的,否则第二种情况甚至可能无法编译)?是否与glb_值有关?