1

我在将用户输入的浮点值精确比较到我的应用程序中的可编辑文本字段时遇到了一些问题。这是示例:

if ((temp>=39.0)&&(temp<=40.9)) {
    ball=ball+3;
}

例如,如果用户输入 ,40.9则不会调用循环中的代码。我只是一个初学者,任何帮助表示赞赏。

4

2 回答 2

1

您应该将您的文字值表示为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可能与预期值有很大不同。

于 2012-12-13T15:19:25.613 回答
-1

尝试创建一个非常小的边距:

float epsilon = 0.0001f;

if (39.0f - epsilon <= temp && temp <= 40.9f + epsilon)
{

}

并确保您正确解析用户输入。

float temp = Float.parseFloat(inputField.getText());
于 2012-12-13T14:33:42.900 回答