超级大的数做加减乘除
java有八大数据类型:
1、byte(位),最大存储数据量是255;
2、short(短整数),最大数据存储量是65536;
3、int(整数),最大数据存储容量是2的32次方减1;
4、long(长整数),最大数据存储容量是2的64次方减1;
5、float(单精度浮动数),直接赋值时必须在数字后加上f或F;
6、double(双精度);
7、boolean(布尔类型);
8、char(字符)。
其中long类型所能存储的容量是2的64次方减1,那如果遇到一个比这个容量的数该怎么办?
我们可以利用数组来处理,因为以上的八种类型都没办法满足产生这个超级大的数,那我们就需要构建一个类,先使这个数能存在。
我这里是构建了一个BigLong类(如果不是为了实现这个算法,java其实存在这个超级大的数-Biginteger直接就可以实现加减乘除还有比较)
public class BigLong {
int num[];
public BigLong(String str) {
int n=0;
int[] count=new int[str.length()];
for(int i=0;i<str.length();i++){
String m=str.substring(i, i+1);
n=Integer.parseInt(m);
count[i]=n;
}
num=count;
}
}
构建这个类的时候也蛮困难的,因为是小白,很多地方特别是数组和String做了很多功课,最后才构建出这个类。
构建函数输入的是String字符串,然后借用count这个数组将字符串处理好后赋值给num实例变量。
然后在main函数就可以使用了:
String str=”58287346328379183738273″;
BigLong b=new BigLong(str);
BigLong d=new BigLong(“3912834622973378193827382723819283298340”);