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类
下一篇:
HTML属性的概念和使用