java biginteger 最大值_精确计算之:详解BigInteger的使用


9143e08a184e2cf41bfdfa31f9cada5f.png

在 Java 中,有许多数字处理的类,比如 Integer类,但是Integer类有一定的局限性。

我们都知道 Integer 是 Int 的包装类,int 的最大值为 2^31-1。若希望描述更大的整数数据时,使用Integer 数据类型就无法实现了,所以Java中提供了BigInteger 类。

BigInteger类型的数字范围较Integer,Long类型的数字范围要大得多,它支持任意精度的整数,也就是说在运算中 BigInteger 类型可以准确地表示任何大小的整数值而不会丢失任何信息。

下面,让我们一起来学习一下BigInteger的常用方法:

正文

读入方法

nextBigInteger():控制台读入一个BigInteger型数据,类似于int型的nextInt();

532f6cb0de97c038fbd2485f9796569c.png

构造方法

默认为十进制,也是我们最常用的,同时也支持自定义进制类型(已存在的);

dee16518ca33026aa6216e8aedce2c25.png

基本运算

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

f290e9c60b16818c70b05e31b77edb8c.png

比较大小

compareTo()返回一个int型数据:1 大于; 0 等于; -1 小于;

max(),min():分别返回大的(小的)那个BigInteger数据;

85dc19b76644495dce7a4a20f6d918fd.png

常量

ZERO,ONE,TEN 返回值为BigInteger类型:有朋友提到的-1,2,源码注释里面已表明不再输出(Not exported.);

494f9a6d8376fcb2635560dc4b5d9cbb.png

类型转换

将BigInteger数据转换成基本数据类型,还可以转换成radix进制的字符串形式;

1c14603ef0ba6e7ee7617008a2ac8953.png

二进制运算

返回值为BigInteger类型,此类方法不常用,有备无患;

77335f40314444069bd71bf7bc216198.png

权限控制

setBit(),testBit():可用于菜单的权限控制,非常好用,原理如下:

4a9b452e4e0866ec652e1d91c1efc72c.png

源码分析

setBit():将set进去变量作为二进制数,计算它们的和,并以十进制显示;

testBit():与setBit()相反,验证this的二进制组成元素中是否包含传入的变量;

edcf26bbf7d5f154c0b6544ca8ed84e4.png

小结

  1. BigInteger也是不可变的,在进行每一步运算时,都会产生一个新的对象。
  2. 发生异常算术条件时,会抛出ArithmeticException异常。例如,一个整数除以“0”,会抛出一个这个类的实例;
  3. 假设计算一个int数据平方与另一个大小的问题,很可能会内存溢出。除了使用二分法外,利用BigInteger的compareTo方法也是一个好选择,简单易懂,而且不需要算法支持;
  4. 本章作为笔记使用,内容比较全面,但常用的只有:构造函数,基本运算以及compareTo(),intValue(),setBit(),testBit()方法;
  5. setBit()和testBit()方法可用于菜单的权限控制,小编在开发中多次尝试,非常好用。很多微博有相关介绍,在这里我不做项目演示了。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值