尧图网络科技 Logo 尧图网络科技
  • 首页
  • 关于我们
  • 建站服务
  • UI 设计
  • 案例展示
  • SEO 优化
  • 资讯中心
  • 联系我们

资讯详情

深度解读 · 专业分析

  • 首页
  • 资讯中心
  • /
  • java.math 包详解

最新资讯

  • 全部资讯
  • 行业动态
  • UI 设计
  • SEO 优化
  • 网站开发

java.math 包详解

📅 发布时间:2026/6/20 14:45:45 👁 浏览次数:
java.math 包详解

java.math 包详解

java.math 包是 Java 提供的用于高精度数学计算的工具包,主要包含两个核心类:BigInteger 和 BigDecimal。这些类用于处理超出基本数据类型范围的数值运算。

1. BigInteger 类
BigInteger 用于表示任意大小的整数,没有理论上的大小限制(受限于内存)。

主要特性
不可变(immutable)类

支持任意精度的整数运算

提供模运算、GCD计算、素数测试等高级功能

常用构造方法
BigInteger(String val)  // 通过字符串构造
BigInteger(byte[] val)  // 通过字节数组构造
AI运行代码
java
常用方法
// 算术运算
BigInteger add(BigInteger val)          // 加法
BigInteger subtract(BigInteger val)     // 减法
BigInteger multiply(BigInteger val)     // 乘法
BigInteger divide(BigInteger val)       // 除法
BigInteger mod(BigInteger m)            // 取模
BigInteger pow(int exponent)           // 幂运算
 
// 比较运算
int compareTo(BigInteger val)           // 比较
boolean equals(Object x)                // 相等判断
 
// 位运算
BigInteger and(BigInteger val)          // 与
BigInteger or(BigInteger val)           // 或
BigInteger not()                        // 非
BigInteger shiftLeft(int n)             // 左移
BigInteger shiftRight(int n)            // 右移
 
// 其他
BigInteger gcd(BigInteger val)          // 最大公约数
boolean isProbablePrime(int certainty)  // 素数测试
BigInteger abs()                        // 绝对值
BigInteger negate()                     // 取负
AI运行代码
java

示例
BigInteger a = new BigInteger("12345678901234567890");
BigInteger b = new BigInteger("98765432109876543210");
 
BigInteger sum = a.add(b);
BigInteger product = a.multiply(b);
BigInteger gcd = a.gcd(b);
AI运行代码
java
2. BigDecimal 类
BigDecimal 用于高精度的浮点数运算,解决了 double 和 float 类型的精度问题。

主要特性
不可变(immutable)类

任意精度的有符号十进制数

提供对舍入行为的完全控制

适合财务计算等需要精确结果的场景

常用构造方法
BigDecimal(String val)      // 通过字符串构造(推荐)
BigDecimal(double val)      // 通过double构造(不推荐)
BigDecimal(BigInteger val)  // 通过BigInteger构造
AI运行代码
java
常用方法
// 算术运算
BigDecimal add(BigDecimal val)              // 加法
BigDecimal subtract(BigDecimal val)         // 减法
BigDecimal multiply(BigDecimal val)         // 乘法
BigDecimal divide(BigDecimal val)           // 除法(需要指定舍入模式)
BigDecimal pow(int n)                       // 幂运算
 
// 舍入控制
BigDecimal setScale(int newScale, RoundingMode roundingMode)  // 设置小数位数
 
// 比较运算
int compareTo(BigDecimal val)               // 比较
boolean equals(Object x)                    // 相等判断(同时比较值和精度)
 
// 其他
BigDecimal abs()                            // 绝对值
BigDecimal negate()                         // 取负
BigDecimal stripTrailingZeros()             // 移除末尾的零
AI运行代码
java

舍入模式(RoundingMode)
Java 提供了多种舍入模式:
 
RoundingMode.UP - 远离零方向舍入
 
RoundingMode.DOWN - 向零方向舍入
 
RoundingMode.CEILING - 向正无穷方向舍入
 
RoundingMode.FLOOR - 向负无穷方向舍入
 
RoundingMode.HALF_UP - 四舍五入
 
RoundingMode.HALF_DOWN - 五舍六入
 
RoundingMode.HALF_EVEN - 银行家舍入法
AI运行代码
java

示例
BigDecimal d1 = new BigDecimal("0.1");
BigDecimal d2 = new BigDecimal("0.2");
 
BigDecimal sum = d1.add(d2);  // 精确结果为0.3
 
BigDecimal d3 = new BigDecimal("1.0");
BigDecimal d4 = new BigDecimal("3.0");
 
// 除法必须指定舍入模式
BigDecimal result = d3.divide(d4, 4, RoundingMode.HALF_UP);  // 0.3333
AI运行代码
java

3. MathContext 类
MathContext 封装了精度和舍入模式的上下文设置,可用于 BigDecimal 运算。

常用预定义上下文
MathContext.DECIMAL32 - 7位精度,HALF_EVEN舍入

MathContext.DECIMAL64 - 16位精度,HALF_EVEN舍入

MathContext.DECIMAL128 - 34位精度,HALF_EVEN舍入

MathContext.UNLIMITED - 无限精度,无舍入

示例
MathContext mc = new MathContext(5, RoundingMode.HALF_UP);
BigDecimal a = new BigDecimal("3.1415926535", mc);  // 3.1416
AI运行代码
java
4. 使用建议
构造方式:优先使用字符串构造 BigDecimal,避免使用 double 构造,因为 double 本身可能有精度损失。

// 不推荐
BigDecimal d = new BigDecimal(0.1);
 
// 推荐
BigDecimal d = new BigDecimal("0.1");
AI运行代码
java
除法运算:BigDecimal 的除法必须指定舍入模式,否则可能抛出 ArithmeticException。

比较操作:使用 compareTo() 而不是 equals() 进行数值比较,因为 equals() 还会比较精度。

性能考虑:BigInteger 和 BigDecimal 的运算比基本数据类型慢,只在必要时使用。

不可变性:所有运算都返回新对象,原对象不变。

java.math 包为 Java 提供了强大的高精度数学计算能力,特别适合需要精确结果的金融、科学计算等应用场景
————————————————
版权声明:本文为CSDN博主「Full Stack Developme」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lizhengyu891231/article/details/153535366

相关新闻

20232319 2025-2026-1 《网络与系统攻防技术》实验二实验报告

20232319 2025-2026-1 《网络与系统攻防技术》实验二实验报告

2026/6/17 22:37:58 查看详情
刷题日记—洛谷循环题单

刷题日记—洛谷循环题单

2026/6/18 19:30:02 查看详情
学号 2025-2026-1 《网络与系统攻防技术》实验二实验报告

学号 2025-2026-1 《网络与系统攻防技术》实验二实验报告

2026/6/20 7:30:58 查看详情
青岛奢侈品回收靠谱门店 TOP 榜,真人亲测甄选,闲置变现不被压价 - 讯息早知道

青岛奢侈品回收靠谱门店 TOP 榜,真人亲测甄选,闲置变现不被压价 - 讯息早知道

2026/6/20 14:44:26 查看详情
从零到一:Arduino驱动MG996R 360度舵机实现精准调速

从零到一:Arduino驱动MG996R 360度舵机实现精准调速

2026/6/20 14:44:26 查看详情
计算机论文辅导机构哪家好?艾德思在导师技术深度和中稿数量上遥遥领先! - 艾德思Editsprings

计算机论文辅导机构哪家好?艾德思在导师技术深度和中稿数量上遥遥领先! - 艾德思Editsprings

2026/6/20 14:42:05 查看详情
微信投票小程序怎么创建投票,2026云众评选实测教程 - 微信投票小程序

微信投票小程序怎么创建投票,2026云众评选实测教程 - 微信投票小程序

2026/6/20 14:42:03 查看详情
嵌入式GUI进阶:emWin内存设备与多触摸技术深度解析与实践

嵌入式GUI进阶:emWin内存设备与多触摸技术深度解析与实践

2026/6/20 14:42:03 查看详情
嵌入式GUI显示驱动配置:从硬件接口到emWin软件抽象层实战

嵌入式GUI显示驱动配置:从硬件接口到emWin软件抽象层实战

2026/6/20 14:42:03 查看详情
团队博客 5:Sprint 3——收官与优化

团队博客 5:Sprint 3——收官与优化

2026/6/20 0:00:19 查看详情
3分钟掌握微信语音转换:Silk v3解码器完整使用指南

3分钟掌握微信语音转换:Silk v3解码器完整使用指南

2026/6/20 0:01:25 查看详情
VAC进程监控模块完全解析:3种扫描类型与虚拟方法表技术揭秘

VAC进程监控模块完全解析:3种扫描类型与虚拟方法表技术揭秘

2026/6/20 0:01:25 查看详情
从Landsat到高分系列:手把手教你选择适合自己项目的遥感卫星数据

从Landsat到高分系列:手把手教你选择适合自己项目的遥感卫星数据

2026/6/20 3:05:19 查看详情
福州空调维修上门加氟移机空调不制冷、推荐本地老牌鑫盛达、冷顺安 - 我叫一

福州空调维修上门加氟移机空调不制冷、推荐本地老牌鑫盛达、冷顺安 - 我叫一

2026/6/20 4:00:16 查看详情
嵌入式调试器组件化界面与拖拽交互技术详解

嵌入式调试器组件化界面与拖拽交互技术详解

2026/6/20 2:29:50 查看详情
YOLOv11涨点改进| CVPR 2026 | 独家创新首发、特征融合改进篇| 引入CMGF 引导特征融合机制,实现对不同模态特征的自适应增强与高效融合,助力多模态目标检测,小目标检测或分割有效涨点

YOLOv11涨点改进| CVPR 2026 | 独家创新首发、特征融合改进篇| 引入CMGF 引导特征融合机制,实现对不同模态特征的自适应增强与高效融合,助力多模态目标检测,小目标检测或分割有效涨点

2026/6/19 22:53:17 查看详情
E-E-A-T 成第一权重:2027 年无经验内容将被彻底淘汰

E-E-A-T 成第一权重:2027 年无经验内容将被彻底淘汰

2026/6/20 4:40:29 查看详情
深圳福田园岭老小区搬家公司推荐 经验足师傅高效搬运攻略 - 从来都是英雄出少年

深圳福田园岭老小区搬家公司推荐 经验足师傅高效搬运攻略 - 从来都是英雄出少年

2026/6/18 22:29:04 查看详情

关于尧图

立足北京本地的一站式网站建设服务与设计教学平台,深耕企业网站定制开发、全网 SEO 优化及网络推广服务。

快速链接

  • 关于我们
  • 建站服务
  • 案例展示
  • 资讯中心

服务项目

  • 企业官网定制
  • UI 界面设计
  • SEO 优化推广
  • 移动端适配

联系方式

电话:400-XXX-XXXX

邮箱:info@zskr.cn

地址:北京市朝阳区 XXX 路 XX 号

© 2026 尧图网络科技 版权所有 | 京 ICP 备 XXXXXXXX 号