Fork me on GitHub

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)
普通
除法
 
 
posted @ 2015-02-26 22:48  森林森  阅读(1381)  评论(0编辑  收藏  举报