专栏【Java基础】
喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。
音乐分享【The truth that you leave】
欢迎并且感谢大家指出我的问题
文章目录
- BigInteger
- 获取BigInteger对象
- ⭐获取一个随机的大整数
- ⭐获取指定的大整数
- ✨注意
- ⭐ 获取指定进制的大整数
- ✨注意
- ⭐静态方法获取BigInteger的对象,内部有优化
- ✨注意
- BigInteger常见成员方法
- ⭐加减乘
- ⭐除
- ️获取商
- ️获取商和余数
- ⭐比较是否相同
- ⭐次幂
- ⭐获取较大值
- ⭐变为long类型的整数
- 总结
- BigDecimal
- ⭐通过传递字符串表示的数字来创建对象
- ⭐通过静态方法获取对象
- ️注意
- ⭐加减乘
- ⭐除
- ️精确模式
- 总结
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
可以看有什么参数