zoukankan      html  css  js  c++  java
  • 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)

  • 相关阅读:
    使用node-inspector调试nodejs程序<nodejs>
    2015 2月记事(1)
    设置npm安装模块目录<nodejs>
    BZOJ 1965 [AHOI2005]洗牌
    BZOJ 1924 [Sdoi2010]所驼门王的宝藏
    【NOIP2003】传染病控制
    BZOJ [Scoi2015]情报传递
    [Noi2002]Savage
    BZOJ 4025: 二分图
    BZOJ 4999 This Problem Is Too Simple!
  • 原文地址:https://www.cnblogs.com/miaoxingren/p/9399258.html
Copyright © 2011-2022 走看看