Java之大数加减乘除——构建类

Posted mdddd-yep

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java之大数加减乘除——构建类相关的知识,希望对你有一定的参考价值。

超级大的数做加减乘除

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");

以上是关于Java之大数加减乘除——构建类的主要内容,如果未能解决你的问题,请参考以下文章

JAVA大数类—基础操作(加减乘除取模四舍五入设置保留位数)

算法课-大数专题

大数加减法 - java实现

Java全栈JavaSE:19.常用类之大数运算日期和日历包装类

Java 基础 -- BigInteger BigDecimai大数

HDU 1314 Numerically Speaking(大数加减乘除+另类二十六进制互相转换)