如果 left 和 right 构造方式不同则可能造成 比较结果不正确的情况产生 正常: new BigDecimal(0.1).compareTo(new BigDecimal( 0.10)) ==> 0 new BigDecimal("0.1").compareTo(new BigDecimal( "0.10")) ==> 0 异常: new BigDecimal("0.1").compareTo(new BigDecimal( 0.10)) ==> -1 解决方式(不过需要考虑精度长度): new BigDecimal("0.1") .setScale(2, BigDecimal.ROUND_HALF_UP) .compareTo(new BigDecimal( 0.10) .setScale(2, BigDecimal.ROUND_HALF_UP)) ==> 0