美文网首页
《Oracle Java SE编程指南》19-03:任意精度整数

《Oracle Java SE编程指南》19-03:任意精度整数

作者: AT阿宝哥 | 来源:发表于2020-05-01 08:35 被阅读0次
课程封面-JavaSE-AT阿宝哥

内容导航

  • 前言

前言

如果我们需要保存的数据非常大,超出了基本数据类型的范围,可以考虑大整数对象或大实数对象。


1、 java.math包

提供用于执行任意精度整数算术(BigInteger)和任意精度十进制算术(BigDecimal)的类。

  • BigInteger
    BigInteger类似于基本整数类型,只是它提供了任意精度,因此对BigIntegers的操作不会溢出或丢失精度。除了标准的算术操作之外,BigInteger还提供了模块算术、GCD计算、素数测试、素数生成、位操作和其他一些杂项操作。
  • BigDecimal
    BigDecimal提供适用于货币计算等的任意精度带符号的小数。BigDecimal为用户提供了对舍入行为的完全控制,允许用户从一组全面的8种舍入模式中进行选择。

2、BigInteger类使用的原因

  • 8种基本数据类型中,long类型所能表示的整数范围是最大的,但还是有限的。

  • 为了解决这些问题,Java中专门提供了用来进行不限制大小的整数计算的类——java.math.BigInteger

  • 该类可以对任意大小的整数进行操作,不过在进行计算的时候是通过方法调用进行的,而不是使用算术运算符


3、BigInteger类的构造方法

  • BigInteger(byte[] val)
    使用一个byte数组表示来构造一个大整数。

  • BigInteger(int signum, byte[] magnitude)
    用一个byte数组magnitude来构造大整数,用signum的-1,0,1来表示负,零,正。

  • BigInteger(int bitLength, int certainty, Random rnd)
    构造一个随机产生的,正的,指定长度的,可能是素数的大整数,参数certainty指明要进行多少次素数测试。

  • BigInteger(int numBits, Random rnd)
    构造一个随机产生的大整数,范围在0到2^numBits – 1之间。

  • BigInteger(String val)
    转换十进制的字符串表达方式为BigInteger这个字符串由一系列的10进制数字和可选择的负号组成符转数字的映射由Character.digit实现这个字符串不能包含任意无关字符(例如:空格)

  • BigInteger(String val, int radix)
    转换字符串的表达式为指定(radix)进制的大整数这个字符串由一系列的指定进制(radix)的数字组成,任意跟上负号字符转数字的映射由Character.digit实现同样,这个字符串不能包含任意无关字符(例如:空格)


4、BigInteger的四则运算实现方法

  • add(BigInteger val)
    返回其值为 (this + val) 的 BigInteger。

  • subtract(BigInteger val)
    返回其值为 (this - val) 的 BigInteger。

  • multiply(BigInteger val)
    返回其值为 (this * val) 的 BigInteger。

  • divide(BigInteger val)
    返回其值为 (this / val) 的 BigInteger。

  • remainder(BigInteger val)
    返回其值为 (this % val) 的 BigInteger

  • mod(BigInteger m)
    返回其值为 (this mod m) 的 BigInteger。

add方法和subtract方法实际上进行的是数组对位相加和相减,这个过程用私有的函数来完成,返回的是为此重新分配空间的结果数组索引值(数组首地址)。然后再用结果数组来构造一个BigInteger作为最后的返回值。

multiply方法使用的是数组相乘,用数组来模拟数字相乘,同样使用一个私有的函数来完成这个过程,为相乘结果数组分配新的空间,最后用结果数组来构造一个BigInteger 作为返回值。


持续更新,欢迎留言提议!
码字很累,多点赞多赞赏!


扫描二维码,关注AT阿宝哥

网友评论

      本文标题:《Oracle Java SE编程指南》19-03:任意精度整数

      本文链接:https://www.haomeiwen.com/subject/sssfghtx.html