Java泛型中的数值比较问题

有以下代码:
class Num<T> {
private T val;
public Num(T val) {
this.val = val;

}
public boolean Compare(T val) {

System.out.println(this.val);

System.out.println(val); return (this.val == val);

}
}

public class First { public static void main(String args[]) {

Num<Double> a = new Num<Double>(1.0);

System.out.println(a.Compare(1.0));

}

}

输出的结果是false,为什么会这样?我把Double换成Integer、Short之类的或者String然后用相应类型的数值进行比较就输出了true了,只有Float、Double不行。请问是什么原因造成的?怎么解决?

貌似double,float表示的不是精确的数,所以即使两个字面上一样的浮点数实际值可能会有微小差别,可以看看计算机是怎么存储浮点数的
温馨提示:答案为网友推荐,仅供参考
相似回答