java.math
如果基本的整数和浮点数精度不能够满足需求,那么可以使用java.math包中两个很有用的类:BigInteger和BigDecimal。这两个类可以处理包含任意长度数字序列的数值。
BigInteger类
BigInteger类实现任意精度的整数运算
BigDecimal类
BigDecimal类实现任意精度的浮点数运算。
静态的valueOf方法
使用静态的valueOf方法可以将普通的数值转换为大数:
| BigInteger a = BigInteger.valueOf(100); |
程序示例
| import java.math.BigInteger; |
| |
| public class HuangZiHanTest |
| { |
| public static void main(String[] args) |
| { |
| int huangzihan100 = 100; |
| int huangzihan1314 = 1314; |
| int huangzihan123456789 = 123456789; |
| |
| BigInteger huangzihanValueOf100 = BigInteger.valueOf(100); |
| BigInteger huangzihanValueOf1314 = BigInteger.valueOf(1314); |
| BigInteger huangzihanValueOf123456789 = BigInteger.valueOf(123456789); |
| |
| System.out.println(huangzihan100); |
| System.out.println(huangzihan1314); |
| System.out.println(huangzihan123456789); |
| System.out.println(); |
| System.out.println(huangzihanValueOf100); |
| System.out.println(huangzihanValueOf1314); |
| System.out.println(huangzihanValueOf123456789); |
| } |
| } |
运行结果
| 100 |
| 1314 |
| 123456789 |
| |
| 100 |
| 1314 |
| 123456789 |
带字符串参数的构造器
对于更大的数,可以使用一个带字符串参数的构造器:
| BigInteger reallyBig = new BigInteger("222232244629428445529739893461909967206666939096499764998979600"); |
程序示例
| import java.math.BigInteger; |
| |
| public class HuangZiHanTest |
| { |
| public static void main(String[] args) |
| { |
| BigInteger huangzihan123456789987654321 = new BigInteger("123456789987654321"); |
| BigInteger huangzihan123456789123456789123456789 = new BigInteger("123456789123456789123456789"); |
| System.out.println(huangzihan123456789987654321); |
| System.out.println(huangzihan123456789123456789123456789); |
| } |
| } |
运行结果
| 123456789987654321 |
| 123456789123456789123456789 |
另外还有一些常量:BigInteger.ZERO、BigInteger.ONE和BigInteger.TEN,Java 9之后还增加了BigInteger.TWO。
add和multiply方法
遗憾的是,不能使用人们熟悉的算术运算符(如:+和×)处理大数,而需要使用大数类中的add和multiply方法。
| BigInteger c = a.add(b); |
| BigInteger d = c.multiply(b.add(BigInteger.valueOf(2))); |
程序示例
| import java.math.BigInteger; |
| |
| public class HuangZiHanTest |
| { |
| public static void main(String[] args) |
| { |
| BigInteger huangzihanA = BigInteger.valueOf(123456789); |
| BigInteger huangzihanB = BigInteger.valueOf(987654321); |
| BigInteger huangzihanC = huangzihanA.add(huangzihanB); |
| System.out.println(huangzihanC); |
| |
| BigInteger huangzihanD = huangzihanC.multiply(huangzihanB.add(BigInteger.valueOf(2))); |
| System.out.println(huangzihanD); |
| } |
| } |
运行结果
| 1111111110 |
| 1097393691124828530 |
程序示例

运行结果
| 你需要画多少个数字? |
| 5 |
| 你能画的最高数字是什么? |
| 10 |
| 你的几率是252分之一。祝你好运! |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异