# BigDecimal 比較大小的方法,以及進位和捨去 ```java= BigDecimal a = new BigDecimal(101); BigDecimal b = new BigDecimal(111); // 使用compareTo方法比较 // 注意:a、b均不能为null,否则会报空指针 if (a.compareTo(b) == -1) { System.out.println("a"); } 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"); } ``` ```java= BigDecimal r = new BigDecimal(-3.3456789); BigDecimal i1 = r.setScale(3,RoundingMode.UP); BigDecimal i2 = r.setScale(3,RoundingMode.DOWN); BigDecimal i3 = r.setScale(3,RoundingMode.CEILING); BigDecimal i4 = r.setScale(3,RoundingMode.FLOOR); BigDecimal i5 = r.setScale(3,RoundingMode.HALF_UP); BigDecimal i6 = r.setScale(3,RoundingMode.HALF_DOWN); BigDecimal i7 = r.setScale(3,RoundingMode.HALF_EVEN); ``` :::info UP:往該數絕對值大的方向進位 DOWN:往該數絕對值小的方向捨去 CEILING:與Math.ceil的進位方式相同 FLOOR:與Math.floor的進位方式相同 HALF_UP:四捨五入(不會有誤差) HALF_DOWN:五捨去,六以上進位 HALF_EVEN:銀行家捨入法 而BigDecimal可以用setScale來設定量級 r.setScale(3,RoundingMode.HALF_UP):這就代表四捨五入到小數點後第三位 ::: ```java= // 如果BigDecimal 大於等於0,則無條件捨去 BigDecimal amount = 100.2; if (amount.compareTo(BigDecimal.ZERO) > -1) { // 小數點無條件捨去 System.out.println(amount.setScale(0, RoundingMode.DOWN)); } ``` ###### tags: java