BigDecimal
对象的问题 - 我知道你可以使用compareTo
代替equals
来做到这一点,因为equals
被记录为:
与compareTo不同,此方法仅在值和规模相等时才将两个BigDecimal对象视为相等(因此,当使用此方法进行比较时,2.0与2.00不相等)。
问题是:为什么要以这种看似违反直觉的方式指定equals
?也就是说,为什么能够区分2.0和2.00是重要的?
看起来很可能有一个原因,因为指定compareTo
方法的Comparable
文档说明:
强烈建议(但不是必需的)自然排序与equals一致
我想必须有一个忽略此建议的好理由。
new BigDecimal("2.0").compareTo(new BigDecimal("2.00")) == 0
。 - Peter Lawrey