引言
区块链里面用的最多的就是计算,并且还是很大的数的计算。大家都知道java里面基本类型里面就long类型可以表示一个64位的大数字,其数值范围为:
long的最大值:9223372036854775807
long的最小值:-9223372036854775808
这个数,看起来很大了,但是对于区块链来说完全是不够的,大家可以看一下我之前的一篇文章:区块链开发以太坊ETH单位转换关系
这里边的数值都很大,做运算时,绝对不可能使用基本类型来做运算的。还好jdk里面已经内置了相关的类来解决这些问题,那就是BigInteger(主要做整数运算)和BigDecimal(主要做浮点运算),今天我们就来介绍一下BigInteger的用法(后边会写和BigDecimal的用法):
常用构造方法
1 | BigInteger(String val) //将 BigInteger 的十进制字符串表示形式转换为 BigInteger。 |
常用方法
1.求绝对值
1 | abs()//返回其值是此 BigInteger 的绝对值的 BigInteger。 |
2.加法
1 | add(BigInteger val) //相当于做加法,返回其值为 (this + val) 的 BigInteger。 |
3.比较大小
1 | compareTo(BigInteger val)//比较大小,大于返回1,等于返回0,小于返回-1 |
4.除法
1 | divide(BigInteger val)//相当于做除法 返回其值为 (this / val) 的 BigInteger。 |
5.转成double
1 | doubleValue()//将此 BigInteger 转换为 double。如果此 BigInteger 的数量太大,不能表示为 double,则将其适当地转换为 Double.NEGATIVE_INFINITY 或 Double.POSITIVE_INFINITY。注意,即使在返回值是有限的情况下,此转换也可以丢失关于 BigInteger 值的精度的信息。 |
6.转换为 float
1 | floatValue() //将此 BigInteger 转换为 float。如果此 BigInteger 的数量太大,不能表示为 float,则将其适当地转换为 Float.NEGATIVE_INFINITY 或 Float.POSITIVE_INFINITY。注意,即使在返回值是有限的情况下,此转换也可以丢失关于 BigInteger 值的精度的信息。 |
7.转换为 int
1 | intValue() //将此 BigInteger 转换为 int。如果此 BigInteger 太长而不适合用 int 表示,则仅返回 32 位的低位字节。注意,此转换会丢失关于该 BigInteger 值的总大小的信息,并返回带有相反符号的结果 |
7.转换为 long
1 | longValue() //将此 BigInteger 转换为 long。如果此 BigInteger 太长而不适合用 long 表示,则仅返回 64 位的低位字节。注意,此转换会丢失关于该 BigInteger 值的总大小的信息,并返回带有相反符号的结果。 |
8.乘法
1 | multiply(BigInteger val) //返回其值为 (this * val) 的 BigInteger。 |
9.减法
1 | subtract(BigInteger val)//返回其值为 (this - val) 的 BigInteger。 |
10.转成十进制字符串表示形式字符串
1 | toString() //返回此 BigInteger 的十进制字符串表示形式。 |
11.转成2,8,10,16进制字符串表示形式字符串
1 | toString(int radix)//返回此 BigInteger 的给定基数的字符串表示形式。radix为进制数 |
Tip:其他方法可以查看帮助文档