JavaAPI中BigInteger、BigDecimal的使用方法及应用

 更新时间:2024年11月05日 11:43:07   作者:在下小吉.  
这篇文章主要给大家介绍了关于JavaAPI中BigInteger、BigDecimal的使用方法及应用,BigInteger是Java中用于表示任意大小整数的类,它提供了加、减、乘、除等多种运算方法,适用于大整数处理和高精度计算场景,需要的朋友可以参考下

BigInteger

BigInteger 是 Java 中的一个类,用于表示任意大小的整数。与基本数据类型 int 或 long 不同,BigInteger 没有固定的范围,可以表示非常大的整数值。

BigInteger 类提供了许多方法来进行整数的运算,包括加法、减法、乘法、除法、取余等。它还支持比较、位操作、幂运算等功能。

BigInteger 类的优点是可以准确地表示和计算任意大小的整数,而不会出现溢出的情况。这对于处理大整数、加密算法、密码学等领域非常有用。

但需要注意的是,由于 BigInteger 是一个对象,而不是基本数据类型,因此在使用时需要进行对象的创建和方法调用,会导致一定的性能损失。在处理一般大小的整数时,可以使用基本数据类型 int 或 long 来获得更高的性能。

总之,BigInteger 是用于处理任意大小整数的类,适用于需要高精度计算或处理非常大整数值的场景。

获取BigInteger对象

获取一个随机的大整数

Random random=new Random();
BigInteger bigInteger=new BigInteger(number,random);

表示返回0 ~ 2^number-1之间的一个整数

获取指定的大整数

BigInteger bigInteger=new BigInteger(number);

注意

只能是获取整数,不能获取小数或者字母

获取指定进制的大整数

BigInteger bigInteger=new BigInteger(number,进制);

注意

  • 进制与number一定要吻合,比如设置为二进制时,number必须为0和1组成的数(例如100,123就不行)
  • 数字不能是小数

静态方法获取BigInteger的对象,内部有优化

注意

🏳️‍🌈能表示的范围比较小,在long的取值范围之内,超出long的范围就不行了
long的最大值是9223372036854775807

但是如果换成了下面这一种方式,就不会报错

证明了静态方法获取BigInteger的对象的范围比较小

🏳️‍🌈在内部,对数字-16~16进行了优化

提前把-16~16先创建好BigInteger的对象,如果多次获取,不会创建新的对象

在这里插入图片描述

🏳️‍🌈对象一旦创建,内部的数据就不能发生变化

只要计算,就会产生新的对象

BigInteger常见成员方法

加减乘

获取商

BigInteger resault=bigInteger1.divide(bigInteger2);

获取商和余数

BigInteger[] arr=bigInteger1.divideAndRemainder(bigInteger2);

比较是否相同

次幂

获取较大值

变为long类型的整数

总结

BigDecimal

在编程中,特别是在处理金融、货币、精确计算等领域,使用 BigDecimal 进行运算可以提供更准确的结果。这是因为 BigDecimal 类在内部使用了任意精度的定点数表示法,可以表示和计算非常大或非常小的数值,同时保持高精度。

相比之下,其他数据类型(如 float 或 double)使用浮点数表示法,其在表示和计算过程中存在精度限制和舍入误差。这是因为浮点数使用有限的二进制位表示小数,无法准确表示某些十进制数。这可能导致在进行精确计算时出现舍入错误或不精确的结果。

然而,需要注意的是,由于 BigDecimal 在内存使用和计算速度方面较 float 或 double 更为消耗资源,因此在处理大量数据或需要高性能的场景下,需要权衡精度和性能之间的取舍。

通过传递字符串表示的数字来创建对象

通过静态方法获取对象

注意

  • 如果要表示的数字不大,没有超出double的取值范围,建议使用静态方法
  • 如果要表示的数字比较大,超出了double的取值范围,建议使用构造方法
  • 如果我们传递的是0~10之间的整数,包含0,包含10,那么方法会返回已经创建好的对象,不会重新new

加减乘

精确模式

public BigDecimal divide(BigDecimal val,精确几位,舍入模式);

ctrl+p可以看有什么参数

总结

到此这篇关于JavaAPI中BigInteger、BigDecimal的使用方法及应用的文章就介绍到这了,更多相关JavaAPI BigInteger、BigDecimal使用方法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot2入门自动配置原理及源码分析

    SpringBoot2入门自动配置原理及源码分析

    这篇文章主要为大家介绍了SpringBoot2入门自动配置原理及源码分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • 关于Java继承中父类和子类构造函数的问题

    关于Java继承中父类和子类构造函数的问题

    这篇文章主要介绍了关于Java继承中父类和子类构造函数的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • Maven中错误使用parent.relativePath导致构建失败问题

    Maven中错误使用parent.relativePath导致构建失败问题

    这篇文章主要介绍了Maven中错误使用parent.relativePath导致构建失败问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • SpringBoot集成quartz实现定时任务详解

    SpringBoot集成quartz实现定时任务详解

    最为常用定时任务框架是Quartz,并且Spring也集成了Quartz的框架,Quartz不仅支持单实例方式还支持分布式方式。本文主要介绍Quartz,基础的Quartz的集成案例本,以及实现基于数据库的分布式任务管理和控制job生命周期
    2022-08-08
  • MyEclipse到期破解代码分享

    MyEclipse到期破解代码分享

    前几天有个小伙伴咨询,使用的时候一直说myeclipse已过期,需要购买,如何解决?可以去网上搜搜注册码,但作为程序猿这么做简直太无趣,看看我们自己来解决这个问题
    2014-11-11
  • VSCode Java项目JDK配置完整攻略指南(JDK版本切换不求人)

    VSCode Java项目JDK配置完整攻略指南(JDK版本切换不求人)

    JDK是指Java软件开发工具包,是Java编程语言的官方实现,由Oracle公司提供,不断更新和维护,这篇文章主要介绍了VSCode Java项目JDK配置(JDK版本切换不求人)的相关资料,需要的朋友可以参考下
    2026-05-05
  • Java安全后端返回文件流方式

    Java安全后端返回文件流方式

    这篇文章主要介绍了Java安全后端返回文件流方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • 浅谈java基本数据类型的范围(分享)

    浅谈java基本数据类型的范围(分享)

    下面小编就为大家带来一篇浅谈java基本数据类型的范围(分享)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • springboot引用kettle实现对接oracle数据的示例代码

    springboot引用kettle实现对接oracle数据的示例代码

    这篇文章主要介绍了springboot引用kettle实现对接oracle数据,其实kettle集成到springboot里面没有多少代码,这个功能最主要的还是ktr文件的编写,只要ktr编写好了,放到指定文件夹下,写个定时任务就完事了,需要的朋友可以参考下
    2022-12-12
  • springboot集成CAS实现单点登录的示例代码

    springboot集成CAS实现单点登录的示例代码

    这篇文章主要介绍了springboot集成CAS实现单点登录的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06

最新评论