大数操作(BigIntger、BigDecimal)

来源:互联网 发布:药理学 知乎 编辑:程序博客网 时间:2024/06/18 17:56

1.Biglnteger

如果在操作的时候一个整形数据已经超过了整数的最大类型长度long 的话,则此数据就无法装入,所以,此时要使用Biglnteger 类进行操作。


BigInteger 是在java.math 包中。

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

2.BigDecimal

对于不需要任何准确计算精度的程序可以直接使用float 或double 完成,但是如果需要精确计算的结果,则必须使用BigDecimal 类。


import java.math.* ;class MyMath{public static double add(double d1,double d2){// 进行加法计算BigDecimal b1 = new BigDecimal(d1) ;BigDecimal b2 = new BigDecimal(d2) ;return b1.add(b2).doubleValue() ;}public static double sub(double d1,double d2){// 进行减法计算BigDecimal b1 = new BigDecimal(d1) ;BigDecimal b2 = new BigDecimal(d2) ;return b1.subtract(b2).doubleValue() ;}public static double mul(double d1,double d2){// 进行乘法计算BigDecimal b1 = new BigDecimal(d1) ;BigDecimal b2 = new BigDecimal(d2) ;return b1.multiply(b2).doubleValue() ;}public static double div(double d1,double d2,int len){// 进行乘法计算BigDecimal b1 = new BigDecimal(d1) ;BigDecimal b2 = new BigDecimal(d2) ;return b1.divide(b2,len,BigDecimal.ROUND_HALF_UP).doubleValue() ;}public static double round(double d,int len){// 进行四舍五入BigDecimal b1 = new BigDecimal(d) ;BigDecimal b2 = new BigDecimal(1) ;return b1.divide(b2,len,BigDecimal.ROUND_HALF_UP).doubleValue() ;}};public class BigDecimalDemo01{public static void main(String args[]){System.out.println("加法运算:" + MyMath.round(MyMath.add(10.345,3.333),1)) ;System.out.println("减法运算:" + MyMath.round(MyMath.sub(10.345,3.333),3)) ;System.out.println("乘法运算:" + MyMath.round(MyMath.mul(10.345,3.333),2)) ;System.out.println("除法运算:" + MyMath.div(10.345,3.333,3)) ;}};


原创粉丝点击