Java常用API(9)----BigInteger类、BigDecimal类

一、BigInteger类                                                                                                                                             点击此处返回总目录

二、BigInteger类的构造方法

三、BigInteger类的方法

四、BigDecimal类

五、BigDecimal类的构造方法

六、BigDecimal类的方法

一、BigInteger类

不可变的任意精度的整数。有时候数据可能超过long型,一旦超过long 型,基本 类型就不能表示了。对于这种超级大数,Java把他变成BigInteger的对象去做。大数的四则运算都是采用方法去完成的。

在java.math包中。

二、BigInteger的构造方法

1. public BigInteger(String val)           //只需要看一个就行了。传递的字符串是数字格式,但是没有长度的限制。

例1:

package cn.itcast.demo07;

import java.math.BigInteger;

public class Test {
    public static void main(String[] args) {
        BigInteger b = new BigInteger("122334434567891274567890456123372627632351261756127");
        System.out.println(b);              //122334434567891274567890456123372627632351261756127。重写了toString()方法。
    }
}

三、BigInteger的方法

1. public BigInteger add(BigInteger val)             //加。

2. public BigInteger subtract(BigInteger val)     //减。

3. public BigInteger multiply(BigInteger val)      //乘。

4. public BigInteger divide(BigInteger val)         //除。

例:

package cn.itcast.demo07;

import java.math.BigInteger;

public class Test {
    public static void main(String[] args) {
        BigInteger a = new BigInteger("1000000000000000000007");
        BigInteger b = new BigInteger("10000000000000000008");
        
        BigInteger bigAdd = a.add(b);
        System.out.println(bigAdd);                   //1010000000000000000015
        
        BigInteger bigSub = a.subtract(b);
        System.out.println(bigSub);                   //989999999999999999999
        
        BigInteger bigMulti = a.multiply(b);     
        System.out.println(bigMulti);                  //10000000000000000008070000000000000000056
        
        BigInteger bigDiv = a.divide(b);
        System.out.println(bigDiv);                    //99
    }
}

四、BigDecimal类

浮点大数运算。如下面例1所示,得到的结果不精确。原因是,在计算机的二进制中,表示浮点数不精确。这种不精确会导致问题。

为了解决超级大型的浮点数据,并能提供高精度的浮点运算,java提供了BigDecimal类。

例1:

package cn.itcast.demo08;

public class Test {
    public static void main(String[] args) {
        System.out.println(0.09 + 0.01);   //0.09999999999999999
        System.out.println(1.0 - 0.32);      //0.6799999999999999
        System.out.println(1.015 * 100);   //101.49999999999999
        System.out.println(1.301 / 100);   //0.013009999999999999
    }
}

五、BigDecimal的构造方法

1. public BigDecimal(String val)          //建议使用这一个。既不会担心超过范围,又能精度表示一个数。

六、BigDecimal的方法

1. public BigDecimal add(BigDecimal augend)                   //加。【例1】

2. public BigDecimal subtract(BigDecimal subtrahend)     //减。【例1】

3. public BigDecimal multiply(BigDecimal multiplicand)      //乘。【例1】

4. public BigDecimal divide(BigDecimal divisor)                 //除。除的时候如果除不尽,会抛出异常,解决方法就是用"方法5"。【例2】

5. public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)    //scale:保留几位小数;roundingMode:保留模式。

                                                                                                                           //保留模式,参见API文档,常用的有:

                                                                                                                           /ROUND_UP:直接进位。

                                                                                                                           // ROUND_DOWN:直接舍去。

                                                                                                                           // ROUND_HALF_UP:四舍五入。

                                                                                                                           // ROUND_HALF_DOWN:>5进位,<=5舍去。【例3】

例1:加、减、乘

package cn.itcast.demo09;

import java.math.BigDecimal;

public class Test {
    public static void main(String[] args) {
        BigDecimal a1 = new BigDecimal("0.09");
        BigDecimal b1 = new BigDecimal("0.01");
        BigDecimal c1 = a1.add(b1);
        System.out.println(c1);         //0.10
        
        BigDecimal a2 = new BigDecimal("1");
        BigDecimal b2 = new BigDecimal("0.32");
        BigDecimal c2 = a2.subtract(b2);
        System.out.println(c2);         //0.68
        
        BigDecimal a3 = new BigDecimal("1.015");
        BigDecimal b3 = new BigDecimal("100");
        BigDecimal c3 = a3.multiply(b3);
        System.out.println(c3);         //101.500
        
    }
}    

例2:

package cn.itcast.demo09;

import java.math.BigDecimal;

public class Test {
    public static void main(String[] args) {
        BigDecimal a1 = new BigDecimal("1.301");
        BigDecimal b1 = new BigDecimal("100");
        BigDecimal c1 = a1.divide(b1);
        System.out.println(c1);                               //0.01301

        BigDecimal a2 = new BigDecimal("1.301");
        BigDecimal b2 = new BigDecimal("101");
        BigDecimal c2 = a2.divide(b2);
        System.out.println(c2);                               // java.lang.ArithmeticException。除不尽的时候报异常。

        
    }
}    

例3:

package cn.itcast.demo09;

import java.math.BigDecimal;

public class Test {
    public static void main(String[] args) {
        BigDecimal a1 = new BigDecimal("1.501");
        BigDecimal b1 = new BigDecimal("100");
        BigDecimal c1 = a1.divide(b1,2,BigDecimal.ROUND_HALF_UP); //保留两位有效数字,四舍五入。
        System.out.println(c1);         //0.01501->0.02
    }
}    

猜你喜欢

转载自blog.csdn.net/pengchengliu/article/details/81707636