Java从零开始学二十九(大数操作(BigIntger、BigDecimal)
一、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)
|
普通
|
除法
|