1 import java.math.BigDecimal; 2 import static java.lang.System.out; 3 public class BaseClass { 4 public static void main(String[] args) { 5 BigDecimal num1 = new BigDecimal("100"); 6 BigDecimal num2 = new BigDecimal("50"); 7
8 //加法
9 BigDecimal result1 = num1.add(num2); 10 out.println("和 是 : " + result1); 11
12 //減法
13 BigDecimal result2 = num1.subtract(num2); 14 out.println("差 是 : " + result2); 15
16 //乘法
17 BigDecimal result3 = num1.multiply(num2); 18 out.println("積 是 : " + result3); 19
20 //除法
21 BigDecimal result4 = num1.divide(num2); 22 out.println("商 是 : " + result4); 23
24 //比較
25 BigDecimal num = new BigDecimal("100"); //用做比較的值
26 out.println(num1.compareTo(num2)); //大於 時,返回 1
27 out.println(num.compareTo(num1)); //等於 時,返回 0
28 out.println(num2.compareTo(num1)); //小於 時,返回 -1
29
30 out.println(num1.min(num2)); //求兩個數的最小值,返回小的數
31 out.println(num1.max(num2)); //求兩個數的最大值,返回大的數 32
33 // compareTo方法比較時,不同於equals方法,需要兩邊都不為null,否則會報空指針異常, 34 // 源碼如下 35 // public int compareTo(BigDecimal val) { 36 // // Quick path for equal scale and non-inflated case. 37 // if (scale == val.scale) { 38 // long xs = intCompact; 39 // long ys = val.intCompact; 40 // if (xs != INFLATED && ys != INFLATED) 41 // return xs != ys ? ((xs > ys) ? 1 : -1) : 0; 42 // } 43 // int xsign = this.signum(); 44 // int ysign = val.signum(); 45 // if (xsign != ysign) 46 // return (xsign > ysign) ? 1 : -1; 47 // if (xsign == 0) 48 // return 0; 49 // int cmp = compareMagnitude(val); 50 // return (xsign > 0) ? cmp : -cmp; 51 // } 52
53 // max/min方法源代碼如下 54 // public BigDecimal max(BigDecimal val) { 55 // return (compareTo(val) >= 0 ? this : val); 56 // } 57 // public BigDecimal min(BigDecimal val) { 58 // return (compareTo(val) <= 0 ? this : val); 59 // }
60 } 61 }