BigInteger
如果在操作的时候一个整型数据已经超过了整数的最大类型长度long的话,则此数据就无法装入,所以,此时要使用BigInteger类进行操作。
不可变的任意精度的整数。所有操作中,都以二进制补码形式表示 BigInteger(如 Java 的基本整数类型)。BigInteger 提供所有 Java 的基本整数操作符的对应物,并提供 java.lang.Math 的所有相关方法。另外,BigInteger 还提供以下运算:模算术、GCD 计算、质数测试、素数生成、位操作以及一些其他操作。
No.
|
方法
|
类型
|
描述
|
1
|
public BigInteger(String val) |
构造
|
将一个字符串变为BigInteger类型的数据 |
2
|
public BigInteger add(BigInteger val) |
普通
|
加法
|
3
|
public BigInteger subtract(BigInteger val) |
普通
|
减法
|
4
|
public BigInteger multiply(BigInteger val) |
普通
|
乘法
|
5
|
public BigInteger divide(BigInteger val) |
普通
|
除法
|
6
|
public BigInteger max(BigInteger val) |
普通
|
返回两个大数字中的最大值 |
7
|
public BigInteger min(BigInteger val) |
普通
|
返回两个大数字中的最小值 |
8
|
public BigInteger[] divideAndRemainder(BigInteger val) |
普通
|
除法操作,数组的第一个元素为除法的商,第二个元素为除法的余数 |
二、 使用BigInteger操作大整数
package com.pb.demo1;
import java.math.BigInteger;
public class BigIntegerDemo {
public static void main(String[] args) {
BigInteger bi1=new BigInteger("123456789");
BigInteger bi2=new BigInteger("987654321");
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]);
}
}
结果:
加法操作:1111111110 减法操作:864197532 乘法操作:121932631112635269 除法操作:8 最大数:987654321 最小数:123456789 商是:8;余数是:9
三、 使用BigDecimal指定小数的保留位数
对于不需要任何准确计算精度的程序可以直接使用float或double完成,但是如果需要精确计算的结果,则必须使用BigDecimal类。
No.
|
方法
|
类型
|
描述
|
1
|
public BigDecimal(double val) |
构造
|
将double表示形式转换为BigDecimal |
2
|
public BigDecimal(int val) |
构造
|
将int表示形式转换为BigDecimal |
3
|
public BigDecimal(String val) |
构造
|
将字符串表示形式转换为BigDecimal |
4
|
public BigDecimal add(BigDecimal augend) |
普通
|
加法
|
5
|
public BigDecimal subtract(BigDecimal subtrahend) |
普通
|
减法
|
6
|
public BigDecimal multiply(BigDecimal multiplicand) |
普通
|
乘法
|
7
|
public BigDecimal divide(BigDecimal divisor) |
普通
|
除法
|
BigDecimal bd1 = new BigDecimal("0.09");
BigDecimal bd2 = new BigDecimal("0.01");
System.out.println("add:" + bd1.add(bd2));
System.out.println("------------------------");
BigDecimal bd3 = new BigDecimal("1.0");
BigDecimalbd4 = new BigDecimal("0.32");
System.out.println("subtract:" + bd3.subtract(bd4));
System.out.println("------------------------");
BigDecimal bd5 = new BigDecimal("1.015");
BigDecimal bd6 = new BigDecimal("100");
System.out.println("multiply:" + bd5.multiply(bd6));
System.out.println("-----------------------");
BigDecimal bd7 = new BigDecimal("1.301");
BigDecimal bd8 = new BigDecimal("100");
System.out.println("divide:" + bd7.divide(bd8));
System.out.println("divide:"+ bd7.divide(bd8, 3, BigDecimal.ROUND_HALF_UP));