Java常用类(5)--不可变的任意精度BigInteger、BigDecimal类

简介: Java常用类(5)--不可变的任意精度BigInteger、BigDecimal类

文章目录


BigInteger类

BigDecimal类


BigInteger类


Integer类作为int的包装类,能存储的最大整型值为2^31-1,Long类也是有限的,

最大为2^63-1。如果要表示再大的整数,不管是基本数据类型还是他们的包装类

都无能为力。


java.math包的BigInteger可以表示不可变的任意精度的整数。BigInteger 提供所有 Java 的基本整数操作符的对应物,并提供 java.lang.Math 的所有相关方法。另外,BigInteger 还提供以下运算:模算术、GCD 计算、质数测试、素数生成、位操作以及一些其他操作。


构造器:

BigInteger(String val):根据字符串构建BigInteger对象


常用方法:

①BigInteger abs():返回此 BigInteger 的绝对值的 BigInteger

②BigInteger add(BigInteger val):返回其值为 (this + val) 的 BigInteger

③BigInteger subtract(BigInteger val):返回其值为 (this - val) 的 BigInteger

④BigInteger multiply(BigInteger val):返回其值为 (this * val) 的 BigInteger

⑤BigInteger divide(BigInteger val):返回其值为 (this / val) 的 BigInteger,整数

相除只保留整数部分

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

⑦BigInteger[] divideAndRemainder(BigInteger val):返回包含 (this / val) 后跟

(this % val) 的两个 BigInteger 的数组

⑧BigInteger pow(int exponent):返回其值为 (this^exponent) 的 BigInteger


BigDecimal类


一般的Float类和Double类可以用来做科学计算或工程计算,但在商业计算中,要求数字精度比较高,故用到java.math.BigDecimal类。BigDecimal类支持不可变的、任意精度的有符号十进制定点数。


构造器:

①public BigDecimal(double val)

②public BigDecimal(String val)


常用方法:

①BigDecimal add(BigDecimal augend)

②BigDecimal subtract(BigDecimal subtrahend)

③BigDecimal multiply(BigDecimal multiplicand)

④BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)


import java.math.BigDecimal;
import java.math.BigInteger;
public class BigDecimalTest {
    public static void main(String[] args) {
        BigInteger bi = new BigInteger("12433241333123");
        BigDecimal bd = new BigDecimal("1241135.351");
        BigDecimal bd2 = new BigDecimal("1335231");
        System.out.println(bi);
        System.out.println(bd.divide(bd2, BigDecimal.ROUND_HALF_UP));
        System.out.println(bd.divide(bd2, 15, BigDecimal.ROUND_HALF_UP));
    }
}


55b7bd75ba0d45209fe537d9a90f9222.png



相关文章
|
17天前
|
安全 Java 数据建模
Java记录类:简化数据载体的新选择
Java记录类:简化数据载体的新选择
169 101
|
17天前
|
安全 Java 开发者
Java记录类:简化数据载体的新方式
Java记录类:简化数据载体的新方式
195 100
|
2月前
|
缓存 安全 Java
Java反射机制:动态操作类与对象
Java反射机制是运行时动态操作类与对象的强大工具,支持获取类信息、动态创建实例、调用方法、访问字段等。它在框架开发、依赖注入、动态代理等方面有广泛应用,但也存在性能开销和安全风险。本文详解反射核心API、实战案例及性能优化策略,助你掌握Java动态编程精髓。
|
2月前
|
存储 安全 Java
Java集合框架(一):List接口及其实现类剖析
本文深入解析Java中List集合的实现原理,涵盖ArrayList的动态数组机制、LinkedList的链表结构、Vector与Stack的线程安全性及其不推荐使用的原因,对比了不同实现的性能与适用场景,帮助开发者根据实际需求选择合适的List实现。
|
Java 开发者
奇迹时刻!探索 Java 多线程的奇幻之旅:Thread 类和 Runnable 接口的惊人对决
【8月更文挑战第13天】Java的多线程特性能显著提升程序性能与响应性。本文通过示例代码详细解析了两种核心实现方式:Thread类与Runnable接口。Thread类适用于简单场景,直接定义线程行为;Runnable接口则更适合复杂的项目结构,尤其在需要继承其他类时,能保持代码的清晰与模块化。理解两者差异有助于开发者在实际应用中做出合理选择,构建高效稳定的多线程程序。
141 7
|
11月前
|
Java 开发者
在 Java 中,一个类可以实现多个接口吗?
这是 Java 面向对象编程的一个重要特性,它提供了极大的灵活性和扩展性。
443 58
|
12月前
|
Java 开发者
在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口
【10月更文挑战第20天】在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口。本文揭示了这两种方式的微妙差异和潜在陷阱,帮助你更好地理解和选择适合项目需求的线程创建方式。
196 3
|
12月前
|
Java
Java中多线程编程的基本概念和创建线程的两种主要方式:继承Thread类和实现Runnable接口
【10月更文挑战第20天】《JAVA多线程深度解析:线程的创建之路》介绍了Java中多线程编程的基本概念和创建线程的两种主要方式:继承Thread类和实现Runnable接口。文章详细讲解了每种方式的实现方法、优缺点及适用场景,帮助读者更好地理解和掌握多线程编程技术,为复杂任务的高效处理奠定基础。
172 2
|
12月前
|
Java 开发者
Java多线程初学者指南:介绍通过继承Thread类与实现Runnable接口两种方式创建线程的方法及其优缺点
【10月更文挑战第20天】Java多线程初学者指南:介绍通过继承Thread类与实现Runnable接口两种方式创建线程的方法及其优缺点,重点解析为何实现Runnable接口更具灵活性、资源共享及易于管理的优势。
245 1
|
Oracle 安全 Java
JDK8到JDK28版本升级的新特性问题之在Java 15及以后的版本中,密封类和密封接口是怎么工作的
JDK8到JDK28版本升级的新特性问题之在Java 15及以后的版本中,密封类和密封接口是怎么工作的

热门文章

最新文章