我在将用户输入的浮点值精确比较到我的应用中的可编辑文本字段时遇到了一些问题。这是一个例子:
if ((temp>=39.0)&&(temp<=40.9)) {
ball=ball+3;
}
如果用户输入例如40.9
,则不会调用循环中的代码。我只是一个初学者,感谢任何帮助。
答案 0 :(得分:1)
您应该将文字值表示为40.9f
。如果省略'f',则文字的类型将默认为double
。还要检查temp
变量的类型。您没有说明如何声明temp
。
修改强>
如果您将temp
声明为Float
或float
,而40.9
是double
,则您的表达式(temp <= 40.9)
正在比较float
到double
,因此编译器会自动将double
转换为float
。将double
转换为float
意味着将变量的字节数减半,因此生成的float
可能与预期值非常不同。
答案 1 :(得分:-1)
尝试创建一个非常小的边距:
float epsilon = 0.0001f;
if (39.0f - epsilon <= temp && temp <= 40.9f + epsilon)
{
}
确保正确解析用户输入。
float temp = Float.parseFloat(inputField.getText());