我的双重比较怎么不工作?

时间:2018-06-03 21:42:29

标签: java double

这是我的代码:

  System.out.println(templist.indexOf(8.14));
            if (ds > 8.1000 && ds<8.1500) {
                dot = templist.indexOf(8.14);
                dot++;
                System.out.println(dot);
            }

的System.out.println(点);

以下是输出: 1 0

为什么没有点得到2的值?这是一个int。

1 个答案:

答案 0 :(得分:0)

结果:

-1
0
如果indexOf()未能在列表中找到双精度值8.14,则可以解释

一个建议是进行以下诊断更改,以确保您看到的输出确实来自以下代码。

System.out.println("Before if-test = " + templist.indexOf(8.14));
if (ds > 8.1000 && ds < 8.1500) {
    dot = templist.indexOf(8.14);
    dot++;
    System.out.println("Dot = " + dot);
}

在确定根本原因后,对println()调用的上述更改可以恢复为原始代码。

另一种可能性是查看类方法实现。如果indexOf()方法返回的对象具有将负值转换为正值的toString()方法(例如,已实现toString()以将-1转换为1),则将调用toString()方法println()方法。然而,

dot = templist.indexOf(8.14);

可能会返回-1。这可以解释输出:

1
0

希望这会有所帮助。 谢谢!