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