Java——BigInteger、BigDecimal

一、Biginteger

1.1、介绍

java.math.Biginteger类不是基本数据类型之一,可以用来对一些大整数做运算。当超出基本数据类型数据范围的整数运算时就可以使用BigInteger了。

1.2、构造方法

BigInteger(String value)

可以将整数的字符串,转换为BigInteger对象。

1.3、常用方法

public BigInteger add(BigInteger value)   // 超大整数加法运算

public BigInteger subtract(BigInteger value)   // 超大整数减法运算

public BigInteger multiply(BigInteger value)   // 超大整数乘法运算

public BigInteger divide(BigInteger value)   // 超大整数除法运算,除不尽取整数部分

例子

public class BigIntegerTest {
    public static void main(String[] args) {
        BigInteger bigNum1 = new BigInteger("123456789987654321");
        BigInteger bigNum2 = new BigInteger("2");

        System.out.println("加法结果:" + bigNum1.add(bigNum2));   // 加法结果:123456789987654323
        System.out.println("减法结果:" + bigNum1.subtract(bigNum2));   // 减法结果:123456789987654319
        System.out.println("乘法结果:" + bigNum1.multiply(bigNum2));   // 乘法结果:246913579975308642
        System.out.println("除法结果:" + bigNum1.divide(bigNum2));   // 除法结果:61728394993827160
    }
}

二、BigDecimal

2.1、介绍

java.math.BigDecimal可以对大浮点数进行运算,保证运算的准确性。float、double它们在存在及运算的时候,会导致数据精度的丢失。如果要保证运算的准确性,就需要使用BigDeciaml。

2.2、构造方法

BigDecimal(String val)

将BigDecimal的字符串表示形式转换为BigDecimal。

2.3、常用方法

public BigDecimal add(BigDecimal value)   // 加法运算

public BigDecimal subtract(BigDecimal value)   // 减法运算

public BigDecimal multiply(BigDecimal value)   // 乘法运算

public BigDecimal divide(BigDecimal value)   // 除法运算(除不尽会有异常)

public BigDecimal divide(BigDecimal value, int scale, RoundingMode roundingMode)   // 除法运算(除不尽,使用该方法)参数说明:scale 准确位数,roundingMode取舍模式 RoundingMode.HALF_UP 四舍五入

例子

public class BigDecimalTest {
    public static void main(String[] args) {
        BigDecimal bigDec1 = new BigDecimal("10.999999999999999");
        BigDecimal bigDec2 = new BigDecimal("0.3001");
        System.out.println("加:" + bigDec1.add(bigDec2));   // 加:11.300099999999999
        System.out.println("减:" + bigDec1.subtract(bigDec2));   // 减:10.699899999999999
        System.out.println("乘:" + bigDec1.multiply(bigDec2));   // 乘:3.3010999999999996999
        System.out.println("除:" + bigDec1.divide(bigDec2, 3, RoundingMode.HALF_UP));   // 除:36.654
    }
}

  

 

原文地址:https://www.cnblogs.com/xulinjun/p/14769837.html