温馨提示×

温馨提示×

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

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

java BigDecimal任意精度整数怎么除

发布时间:2026-10-23 09:15:25 来源:亿速云 阅读:89 作者:小樊 栏目:编程语言

在 Java 里,BigDecimal 本身不是整数类型,它是任意精度的“十进制浮点数”。
如果你说的“任意精度整数”是指 BigInteger,那才是真正的任意精度整数。

下面分两种情况说清楚。


一、用 BigInteger 做“任意精度整数除法”

1️⃣ 整除(只取商,不要小数)

import java.math.BigInteger;

BigInteger a = new BigInteger("1000000000000000000000000000007");
BigInteger b = new BigInteger("3");

BigInteger quotient = a.divide(b); // 整除(向下取整)
System.out.println(quotient);

2️⃣ 整除 + 余数

BigInteger[] result = a.divideAndRemainder(b);
BigInteger q = result[0]; // 商
BigInteger r = result[1]; // 余数

✅ 这是真正的整数除法,不会丢精度。


二、如果你“非要用 BigDecimal”做整数除法

1️⃣ 先设精度(否则可能抛异常)

import java.math.BigDecimal;
import java.math.RoundingMode;

BigDecimal a = new BigDecimal("10");
BigDecimal b = new BigDecimal("3");

BigDecimal result = a.divide(b, 20, RoundingMode.HALF_UP);
System.out.println(result);

2️⃣ 只要整数结果(四舍五入或截断)

BigDecimal result = a.divide(b, 0, RoundingMode.DOWN);

三、什么时候用哪个?

需求 推荐
整数除法、不想要小数 ✅ BigInteger.divide
金额、十进制精确计算 ✅ BigDecimal
需要无限精度分数 ❌ Java 不支持,要用 BigInteger 自己实现分子/分母

四、常见坑 ⚠️

new BigDecimal(0.1); // ❌ 不精确
new BigDecimal("0.1"); // ✅ 精确

BigDecimal 构造 一定要用字符串。


总结一句话

整数任意精度除法 → 用 BigInteger.divide
十进制精确除法 → 用 BigDecimal.divide(..., scale, RoundingMode)

如果你是想做“分数运算 / 保留整数 / 高精度算法”,可以告诉我具体场景,我可以直接给你写法。

向AI问一下细节

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

AI
助
手