这不是关于如何比较两个BigDecimal
对象的问题 - 我知道您可以使用compareTo
而不是equals
这样做,因为equals
记录为:
与 compareTo 不同,此方法仅当两个 BigDecimal 对象的值和比例相等时才认为它们相等(因此,通过此方法进行比较时,2.0 不等于 2.00)。
问题是:为什么equals
以这种看似违反直觉的方式来指定?也就是说,为什么能够区分 2.0 和 2.00很重要?
这似乎一定是有原因的,因为Comparable
指定compareTo
方法的文档指出:
强烈建议(尽管不是必需的)自然排序与 equals 一致
我想一定有充分的理由忽略这个建议。