温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java BigDecimal任意精度整数怎么用

发布时间:2026-09-12 04:48:52 来源:亿速云 阅读:89 作者:小樊 栏目:编程语言

在 Java 里,BigDecimal 本身不是“任意精度整数”,它是任意精度的十进制浮点数(可带小数)。
如果你想要的是任意精度整数,正确的类是 java.math.BigInteger。

下面分两部分说清楚:


一、如果你要的是「任意精度整数」→ 用 BigInteger

1️⃣ 创建 BigInteger

import java.math.BigInteger;

BigInteger a = new BigInteger("123456789012345678901234567890");
BigInteger b = BigInteger.valueOf(100); // 小整数推荐这种方式

⚠️ 不要用 new BigInteger(123)(没有这个构造)


2️⃣ 基本运算

BigInteger sum = a.add(b);        // 加
BigInteger sub = a.subtract(b);   // 减
BigInteger mul = a.multiply(b);   // 乘
BigInteger div = a.divide(b);     // 除(整除)
BigInteger mod = a.mod(b);        // 取模

3️⃣ 常用方法

a.compareTo(b);   // 比较:-1, 0, 1
a.pow(10);        // 幂
a.gcd(b);         // 最大公约数
a.isProbablePrime(10); // 是否可能是质数

4️⃣ 转成其他类型

long x = a.longValue();        // 可能溢出
String s = a.toString();

二、如果你“必须用 BigDecimal 当整数用”

BigDecimal 也可以表示没有小数部分的任意精度数:

import java.math.BigDecimal;

BigDecimal a = new BigDecimal("123456789012345678901234567890");
BigDecimal b = BigDecimal.ZERO;

BigDecimal sum = a.add(b);

⚠️ 注意:

  • 一定要用字符串构造,否则精度会丢
  • BigDecimal 默认会保留小数位(如 1.0)

设为“整数模式”(去掉小数)

BigDecimal c = a.setScale(0, RoundingMode.DOWN);

三、BigInteger vs BigDecimal 怎么选?

需求 用哪个
整数运算 ✅ BigInteger
金额 / 小数 ✅ BigDecimal
高精度整数 ✅ BigInteger
科学计算 ❌ 都不适合(用 double / 第三方库)

四、一句话总结

任意精度整数 = BigInteger
任意精度小数 = BigDecimal

如果你有具体场景(比如:超大整数运算 / 金额计算 / 幂运算),我可以给你更合适的示例代码。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手