我在Java中有以下代码;
BigDecimal price; // assigned elsewhere
if (price.compareTo(new BigDecimal("0.00")) == 0) {
return true;
}
Run Code Online (Sandbox Code Playgroud)
写if条件的最佳方法是什么?
注:如果应谨慎
BigDecimal对象作为一个键SortedMap或元素的SortedSet自BigDecimal的自然顺序是与等号一致.
例如,如果你创建HashSet并添加new BigDecimal("1.0")和new BigDecimal("1.00")它的集将包含两个元素(因为该值有不同的尺度,所以是不相等的根据equals和hashCode),但如果你有做同样的事情TreeSet,该Set只包含一个元素,因为使用时值比较相等compareTo.
这种不一致背后有什么具体原因吗?