使用ifelse检查android中的浮点值

时间:2012-03-19 15:15:54

标签: java android floating-point

我正在制作一个需要检查浮动x值的安卓游戏,如果值为320则应该重置为1,如果不是,则应该增加15。这是我的代码使用,但是,它不起作用:

if (x == 320) {
    x = 1;
    Parachuter p = new Parachuter(x, y);
    parachuters.add(p);
    Toast.makeText(getContext(), "x=" + x + " y=" + y, 15).show();
}
else {
    x = x + 15;
    Parachuter p = new Parachuter(x, y);
    parachuters.add(p);
    Toast.makeText(getContext(), "x=" + x + " y=" + y, 15).show();
}

4 个答案:

答案 0 :(得分:1)

你能告诉我们什么不起作用吗?使用浮点数尝试并使用F扩展名来标识其浮点数(例如x == 320.0f)。

我有一种感觉,你想知道X位置是否大于或等于320,在这种情况下你需要使用以下内容:

            if (x >= 320) {
                x = 1;
                Parachuter p = new Parachuter(x, y);
                parachuters.add(p);
                Toast.makeText(getContext(), "x=" + x + " y=" + y, 15).show();
            }
            else {
                x += 15;
                Parachuter p = new Parachuter(x, y);
                parachuters.add(p);
                Toast.makeText(getContext(), "x=" + x + " y=" + y, 15).show();
            }

另外,我建议您打印到日志而不是每次都创建Toasts。

答案 1 :(得分:1)

不要以这种方式比较浮点值。而不是x == 320.0,它们应该像这样比较:

if (Math.abs(x - 320.0) < EPS) {}

其中EPS是一个像1e-6这样的小值或类似的小值。

答案 2 :(得分:1)

如果这是唯一改变x值的代码,那么问题是x永远不会是320.如果x从1开始并且每次增加15,那么x最终将变为316,然后331。

如果x从0开始,则它将变为315,然后变为330。

将您的if语句更改为测试x >= 320可能会做您想做的事。

答案 3 :(得分:0)

使用调试器并一次检查每个变量的值。找出分配给变量的值不正确地工作可能会有所帮助。