JAVA中Integer、BingInteger和BigDecimal之间的用法记录

1、基本介绍

在JAVA中, Integerint 的包装类。一个 Integer 类型占 4 字节,一个字节占 8 bit,因此一个 Integer 总共占 32 bit。去除第一位的符号位,剩下 31 位来表示数值。

所以Integer的表示范围最小值为 -2^31,最大值为 2^31-1。

Java中提供了大数字(超过16位有效位)的操作类,即 java.math.BigInteger 类和 java.math.BigDecimal 类,用于高精度计算。

其中 BigInteger 类是针对大整数的处理类,而 BigDecimal 类则是针对大小数的处理类。BigDecimal 类的实现用到了 BigInteger 类,不同的是 BigDecimal 加入了小数的概念。

2、BigInteger

2.1 创建BigInteger类型数据

① nextBigInteger方式——从控制台读入一个BigInteger型数据

Scanner scanner = new Scanner(System.in);
//1.创建BigInteger类型的数据
BigInteger data = scanner.nextBigInteger();

② new BigInteger(String val)方式——将十进制字符串表示形式转换为BigInteger

BigInteger data = new BigInteger("1111");

③ new BigInteger(String val,int radix)——将 radix 进制的数据转化为十进制的BigInteger类型的数据

BigInteger data3 = new BigInteger("1111",2);

②和③其实一样,不指定 radix 则默认是十进制。

2.2 BigInteger类型运算

返回值为BigInteger类型:add(),subtract(),multiply(),divide(),mod(),remainder(),pow(),abs(),negate();

BigInteger a = new BigInteger("13");
BigInteger b = new BigInteger("4");
int n = 3;

//1.加
BigInteger bigNum1 = a.add(b);			//17
//2.减
BigInteger bigNum2 = a.subtract(b);		//9
//3.乘
BigInteger bigNum3 = a.multiply(b);		//52
//4.除
BigInteger bigNum4 = a.divide(b);		//3
//5.取模(需 b > 0,否则出现异常:ArithmeticException("BigInteger: modulus not positive"))
BigInteger bigNum5 = a.mod(b);			//1
//6.求余
BigInteger bigNum6 = a.remainder(b);	//1
//7.平方(需 n >= 0,否则出现异常:ArithmeticException("Negative exponent"))
BigInteger bigNum7 = a.pow(n);			//2197
//8.取绝对值
BigInteger bigNum8 = a.abs();			//13
//9.取相反数
BigInteger bigNum9 = a.negate();		//-13

2.3 BigInteger类型常量

//0
BigInteger zero = BigInteger.ZERO;
//1
BigInteger one = BigInteger.ONE;
//10
BigInteger ten = BigInteger.TEN;

2.4 比较BigInteger类型数据的大小

① 比较大小:int compareTo(BigInteger val)
返回值:1:this大于val;0:等于;-1:this小于val

② 获取较大值:BigInteger max(BigInteger val)
返回较大的值

③ 获取较小值:BigInteger min(BigInteger val)
返回较小的值

3、BigDecimal

3.1 创建BigDecimal类型数据

BigDecimal(double d) 创建一个具有参数所指定双精度值的对象。 【不推荐使用】
BigDecimal(String s) 创建一个具有参数所指定以字符串表示的数值的对象。【推荐使用】
BigDecimal(long) 创建一个具有参数所指定长整数值的对象。
BigDecimal(int) 创建一个具有参数所指定整数值的对象。

注意:double 参数的构造方法不推荐使用,因为它不能精确的得到相应的值

3.2 BigDecimal对象的常用方法

1.BigDecimal add(BigDecimal value):加法,求两个BigDecimal类型数据的和。
 
 
2.BigDecimal subtract(BigDecimal value):减法,求两个BigDecimal类型数据的差。
 
 
3.BigDecimal multiply(BigDecimal  value):乘法,求两个BigDecimal类型数据的积。
 
 
4.BigDecimal divide(BigDecimal divisor):除法,求两个BigDecimal类型数据的商。
 
 
5.BigDecimal remainder(BigDecimal divisor):求余数,求BigDecimal类型数据除以divisor的余数。
 
 
6.BigDecimal max(BigDecimal value):最大数,求两个BigDecimal类型数据的最大值。
 
 
7.BigDecimal min(BigDecimal value):最小数,求两个BigDecimal类型数据的最小值。
 
 
8.BigDecimal abs():绝对值,求BigDecimal类型数据的绝对值。
 
 
9.BigDecimal negate():相反数,求BigDecimal类型数据的相反数。

其中除法 divide 有三个参数的方法,第一参数表示除数,第二个参数表示小数点后保留位数,第三个参数表示取舍规则,详情参考:https://blog.csdn.net/qq_37080455/article/details/98964856

4、两者之间的转换

BigIntegerBigDecimal

BigDecimal bigDecimal = new BigDecimal(bigInteger)

5、参考博客

https://blog.csdn.net/qq_37080455/article/details/98964856
https://blog.csdn.net/qq_44366571/article/details/115584732
https://blog.csdn.net/weixin_44259720/article/details/87002816

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值