我不知道如何处理new BigDecimal("0E30").它的价值是0但它没有比较BigDecimal.ZERO.见下文:
System.out.println(new BigDecimal("0E30").add(BigDecimal.ONE)); // ---> 1
System.out.println(new BigDecimal("0E30").equals(BigDecimal.ZERO)); // ---> false
Run Code Online (Sandbox Code Playgroud)
有人可以帮我进行比较吗(我知道我可以通过转换为BigDecimals来解决问题double,但我想知道发生了什么)?我正在使用JRE 1.6.3.谢谢
从文档(重点是我的):
将此BigDecimal与指定的Object进行相等性比较.与compareTo不同,此方法只考虑两个BigDecimals的值和比例相等(因此通过此方法比较时2.0不等于2.00).
在这种情况下,比例不匹配.所以相反,你应该使用compareTo().
BigDecimal是equals()与compareTo()以下内容不一致的案例之一:
注意:如果将BigDecimals用作SortedMap中的键或SortedSet中的元素,则应该小心,因为BigDecimal的自然 顺序与equals不一致.有关详细信息,请参阅Comparable,SortedMap或SortedSet.
| 归档时间: |
|
| 查看次数: |
412 次 |
| 最近记录: |