这是我的代码:
Real AB = adj[a].get(b);
System.out.println("AB " + AB);
Real AC = adj[a].get(c);
System.out.println("AC " + AC);
Real BC = adj[b].get(c);
System.out.println("BC " + BC);
System.out.println(AB.plus(BC));
System.out.println(AB.plus(BC).equals(AC));
这是输出:
AB 2.2360679775
AC 6.7082039325
BC 4.4721359550
6.7082039325
false
即使数字相同,为什么它会返回false?我也试过
System.out.println(AB.plus(BC).compareTo(AC) == 0);
再次,false
。
答案 0 :(得分:2)
equals()
的{{1}}实现检查相同的有效数,错误和指数。相反,请使用Real
,其中"会考虑可能的错误(例如数字错误)。"
附录:关于浮点比较,请参阅这些文章: