这不是有关如何比较两个BigDecimal
对象的问题-我知道您可以使用compareTo
而不是equals
这样做,因为equals
记录为:
与compareTo不同,此方法仅在两个BigDecimal对象的值和比例相等时才认为它们相等(由此方法比较时,2.0不等于2.00)。
问题是:为什么equals
以这种似乎违反直觉的方式来指定?也就是说,为什么能够区分2.0和2.00 为何很重要?
似乎有一定的原因,因为Comparable
指定compareTo
方法的文档指出:
强烈建议(尽管不是必需的)自然顺序应与等号保持一致
我认为一定有充分的理由不理会这项建议。
因为在某些情况下,精度指示(即误差容限)可能很重要。
例如,如果要存储由两个物理传感器进行的测量,则一个精度可能比另一个精度高10倍。代表这一事实可能很重要。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句