BigDecimal比较建议用compareTo
BigDecimal.setScale()方法实用技巧
scale() 方法用于格式化小数点
- setScale(1,BigDecimal.ROUND_DOWN) 直接删除多余的小数位,如2.35会变成2.3
- setScale(1,BigDecimal.ROUND_UP) 进位处理(无论小数如何),2.35变成2.4
- setScale(1,BigDecimal.ROUND_HALF_UP) 四舍五入,2.35变成2.4(目前最常用的金额处理方法)
- setScale(1,BigDecimal.ROUND_HALF_DOWN)
四舍五入,2.35变成2.3,如果是5则向下舍(6及以上则向上入)
BigDecimal比较建议用compareTo
compareTo()方法在比较时不会引发异常。
BigDecimal b1 = new BigDecimal(0.1);
BigDecimal b2 = new BigDecimal(0.2);
int c = b1.compareTo(b2); // -1
if(a.compareTo(b) == -1){ System.out.println("a小于b"); }
if(a.compareTo(b) == 0){ System.out.println("a等于b"); }
if(a.compareTo(b) == 1){ System.out.println("a大于b"); }
if(a.compareTo(b) > -1){ System.out.println("a大于等于b"); }
if(a.compareTo(b) < 1){ System.out.println("a小于等于b"); }
c=1表示b1大于b2
c=0表示b1等于b2
c=-1表示b1小于b2
c!=-1 表示 b1大于等于b2