比较用户输入的浮点值(Android)

时间:2012-12-13 14:31:14

标签: java android floating-point

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

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

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

2 个答案:

答案 0 :(得分:1)

您应该将文字值表示为40.9f。如果省略'f',则文字的类型将默认为double。还要检查temp变量的类型。您没有说明如何声明temp

修改

如果您将temp声明为Floatfloat,而40.9double,则您的表达式(temp <= 40.9)正在比较floatdouble,因此编译器会自动将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());