1

这是我的代码:

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

4

1 回答 1

2

检查相同有效数、错误和指数的equals()实现。Real相反,使用approximates(),它“考虑到可能的错误(例如数字错误)”。

附录:关于浮点比较,另见这些文章:

于 2014-05-15T08:34:00.613 回答