有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为什么不显示“好”这个词?

当我运行这段代码时,为什么不显示“good”一词?存储在Array1和Array2的位置0中的值都是1

public class ArrayStuff {

    public static void main(String[] args) {

        double value = 1;

        Double[] Array1 = new Double[10];
        Array1 = new Double[] {1.0};

        Double[] Array2 = new Double[10];

        Array2[0] = value;

        int i = 0;

        System.out.println(Array1[0]);
        System.out.println(Array2[i]);

        if (Array1[0] == Array2[i])
        {

            System.out.println("good");

        }
     }

}

共 (1) 个答案

  1. # 1 楼答案

    因为有限精度数有它们的limits,特别是在比较它们的精确等式时

    您应该通过检查to值之间的差异是否小于某个阈值来解决问题:

    public final double EPSILON = 0.001;
    
    if (Math.abs(Array1[0] - Array2[i]) < EPSILON)
     ...