java 大数

来源:互联网 发布:淘宝上取消了分流 编辑:程序博客网 时间:2024/05/22 12:21

1、BigInteger:针对大的整数, 是以字符串方式进行传人的

  1. import java.math.BigInteger ; 
  2. public class BigIntegerDemo01{ 
  3.     public static void main(String args[]){ 
  4.         BigInteger bi1 = new BigInteger("123456789") ;  // 声明BigInteger对象 
  5.         BigInteger bi2 = new BigInteger("987654321") ;  // 声明BigInteger对象 
  6.         System.out.println("加法操作:" + bi2.add(bi1)) ;    // 加法操作 
  7.         System.out.println("减法操作:" + bi2.subtract(bi1)) ;   // 减法操作 
  8.         System.out.println("乘法操作:" + bi2.multiply(bi1)) ;   // 乘法操作 
  9.         System.out.println("除法操作:" + bi2.divide(bi1)) ; // 除法操作 
  10.         System.out.println("最大数:" + bi2.max(bi1)) ;  // 求出最大数 
  11.         System.out.println("最小数:" + bi2.min(bi1)) ;  // 求出最小数 
  12.         BigInteger result[] = bi2.divideAndRemainder(bi1) ; // 求出余数的除法操作 
  13.         System.out.println("商是:" + result[0] +  
  14.             ";余数是:" + result[1]) ; 
  15.     } 
  16. }; 

执行结果:

  1. 加法操作:1111111110 
  2. 减法操作:864197532 
  3. 乘法操作:121932631112635269 
  4. 除法操作:8 
  5. 最大数:987654321 
  6. 最小数:123456789 
  7. 商是:8;余数是:9 

2、BigDecimal:针对大的浮点数, 是以字符串的方式传入的

  1. import java.math.* ; 
  2. class MyMath{ 
  3.     public static double add(double d1,double d2){      // 进行加法计算 
  4.         BigDecimal b1 = new BigDecimal(d1) ; 
  5.         BigDecimal b2 = new BigDecimal(d2) ; 
  6.         return b1.add(b2).doubleValue() ; 
  7.     } 
  8.     public static double sub(double d1,double d2){      // 进行减法计算 
  9.         BigDecimal b1 = new BigDecimal(d1) ; 
  10.         BigDecimal b2 = new BigDecimal(d2) ; 
  11.         return b1.subtract(b2).doubleValue() ; 
  12.     } 
  13.     public static double mul(double d1,double d2){      // 进行乘法计算 
  14.         BigDecimal b1 = new BigDecimal(d1) ; 
  15.         BigDecimal b2 = new BigDecimal(d2) ; 
  16.         return b1.multiply(b2).doubleValue() ; 
  17.     } 
  18.     public static double div(double d1,double d2,int len){      // 进行乘法计算 
  19.         BigDecimal b1 = new BigDecimal(d1) ; 
  20.         BigDecimal b2 = new BigDecimal(d2) ; 
  21.         return b1.divide(b2,len,BigDecimal.ROUND_HALF_UP).doubleValue() ; 
  22.     } 
  23.     public static double round(double d,int len){   // 进行四舍五入 
  24.         BigDecimal b1 = new BigDecimal(d) ; 
  25.         BigDecimal b2 = new BigDecimal(1) ; 
  26.         return b1.divide(b2,len,BigDecimal.ROUND_HALF_UP).doubleValue() ; 
  27.     } 
  28. }; 
  29.  
  30. public class BigDecimalDemo01{ 
  31.     public static void main(String args[]){ 
  32.         System.out.println("加法运算:" + MyMath.round(MyMath.add(10.345,3.333),1)) ; 
  33.         System.out.println("减法运算:" + MyMath.round(MyMath.sub(10.345,3.333),3)) ; 
  34.         System.out.println("乘法运算:" + MyMath.round(MyMath.mul(10.345,3.333),2)) ; 
  35.         System.out.println("除法运算:" + MyMath.div(10.345,3.333,3)) ; 
  36.     } 
  37. }; 

执行结果:

  1. 加法运算:13.7 
  2. 减法运算:7.012 
  3. 乘法运算:34.48 
  4. 除法运算:3.104 

总结:针对大数以字符串的方式传人,再利用提供的加减乘除方法来操作数据,而不是以'+ - * /'来操作数据

0 0