Java——处理大数据 BigInteger

整型

int型表示范围是:-(2的31次方) ~ (2的31次方) - 1

long型表示范围是:-(2的64次方) ~(2的64次方) - 1

浮点型 float和double是表示浮点型的数据类型,他们之间的区别在于他们的精确度不同 float 3.402823e+38 ~ 1.401298e-45(e+38表示是乘以10的38次方,同样,e-45表示乘以10的负45次方)占用4个字节

double 1.797693e+308~ 4.9000000e-324 占用8个字节 double型比float型存储范围更大,精度更高,所以通常的浮点型的数据在不声明的情况下都是double型的,如果要表示一个数据是float型的,可以在数据后面加上“F”。

因此若要存储超过 long类型的整数,要用到 BigInteger

BigInteger使用方法

public BigInteger(String val):传入字符串,默认使用十进制
public BigInteger(String val,int radix):传入字符串和进制数

基本运算:

学习例题:

你一定听说过这个故事。国王对发明国际象棋的大臣很佩服,问他要什么报酬,大臣说:请在第 11 个棋盘格放 11 粒麦子,在第 22 个棋盘格放 22 粒麦子,在第 33 个棋盘格放 44 粒麦子,在第 44 个棋盘格放 88 粒麦子,......后一格的数字是前一格的两倍,直到放完所有棋盘格(国际象棋共有 6464 格)

请你借助计算机准确地计算,到底需要多少粒麦子。

import java.math.BigInteger;

public class Main{
    public static void main(String[] args) {
        BigInteger a = new BigInteger("0");
        BigInteger b = new BigInteger("2");

        for (int i = 0;i < 64;i++){
            a = a.add(b.pow(i));
        }
        System.out.println(a);
    }
}

总结:

做类似题目时,运算值已经远远超过int和long类型的范围,就要考虑 BigInteger类

经验分享 程序员 微信小程序 职场和发展