java ->大数据运算(BigInteger)

大数据运算

BigInteger

  java中long型为最大整数类型,对于超过long型的数据如何去表示呢.在Java的世界中,超过long型的整数已经不能被称为整数了,它们被封装成BigInteger对象.在BigInteger类中,实现四则运算都是方法来实现,并不是采用运算符.

  BigInteger类的构造方法:

 BigInteger b = new BigInteger(str);

  构造方法中,采用字符串的形式给出整数

四则运算代码:

public static void main(String[] args) {

     //大数据封装为BigInteger对象

          BigInteger big1 = new BigInteger("12345678909876543210");

          BigInteger big2 = new BigInteger("98765432101234567890");

          //add实现加法运算

          BigInteger bigAdd = big1.add(big2);

          //subtract实现减法运算

          BigInteger bigSub = big1.subtract(big2);

          //multiply实现乘法运算

          BigInteger bigMul = big1.multiply(big2);

          //divide实现除法运算

          BigInteger bigDiv = big2.divide(big1);

}

BigDecimal

  在程序中执行下列代码,会出现什么问题?

    System.out.println(0.09 + 0.01);

    System.out.println(1.0 - 0.32);

    System.out.println(1.015 * 100);

    System.out.println(1.301 / 100);

 double和float类型在运算中很容易丢失精度,造成数据的不准确性,Java提供我们BigDecimal类可以实现浮点数据的高精度运算

   构造方法如下:

  BigDecimal b = new BigDecimal(str);

  建议浮点数据以字符串形式给出,因为参数结果是可以预知的

  实现加法减法乘法代码如下:(运算方法与BigInteger一致)

    public static void main(String[] args) {

          //大数据封装为BigDecimal对象

          BigDecimal big1 = new BigDecimal("0.09");

          BigDecimal big2 = new BigDecimal("0.01");

          //add实现加法运算

          BigDecimal bigAdd = big1.add(big2);

     

          BigDecimal big3 = new BigDecimal("1.0");

          BigDecimal big4 = new BigDecimal("0.32");

          //subtract实现减法运算

          BigDecimal bigSub = big3.subtract(big4);

         

          BigDecimal big5 = new BigDecimal("1.105");

          BigDecimal big6 = new BigDecimal("100");

          //multiply实现乘法运算

          BigDecimal bigMul = big5.multiply(big6);

  对于浮点数据的除法运算,和整数不同,可能出现无限不循环小数,因此需要对所需要的位数进行保留和选择舍入模式

   BigDecimal b = big1.divide(big2,保留小数点后面几位,舍入模式)

 // BigDecimal b = big1.divide.(big2,2,BigDecimal.ROUND_DOWN)

猜你喜欢

转载自www.cnblogs.com/miaoxingren/p/9399258.html