我将3.5值传递给glb_value
float sendValueFloat = Float.valueOf(glb_value);
以上工作正常
float sendValueFloat = Float.parseFloat(glb_value);
但上面是抛出数字格式异常
任何人都可以解释为什么
答案 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);
}