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 }