为什么以下返回1?
new BigDecimal(0.82).setScale(5, BigDecimal.ROUND_HALF_DOWN)
.compareTo(new BigDecimal(0.82))
Run Code Online (Sandbox Code Playgroud)
我希望这会返回,0因为根据其文档BigDecimal.compareTo 忽略了比例:
将此
BigDecimal与指定的BigDecimal. 值相等但具有不同比例(如和)的两个BigDecimal对象被此方法视为相等。[...]2.02.00
new BigDecimal(0.82)实际上不是0.82,因为你传递一个double值-double 最接近至0.82,这是不完全0.82 -给构造函数,所以new BigDecimal(0.82)是BigDecimal等于double最接近0.82。
相反,使用new BigDecimal("0.82").
| 归档时间: |
|
| 查看次数: |
2065 次 |
| 最近记录: |