BigInteger.divide() 仅支持精确整除,除数为零或不能整除时抛 ArithmeticException;推荐用 divideAndRemainder() 获取商和余数;负数遵循向零取整,余数符号同被除数。

BigInteger.divide() 是 Java 中用于执行大整数**精确整除**的方法,它要求除数不能为零,且结果必须是整数(即整除),否则会抛出 ArithmeticException。
divide() 方法的基本用法
该方法签名是:public BigInteger divide(BigInteger divisor)。它返回当前 BigInteger 除以参数 divisor 的**商(向下截断的整数结果)**,不保留余数。
- 只支持整除——被除数必须能被除数整除,否则运行时报错
- 结果始终是向零截断(Java 8+ 中对负数也遵循“向零取整”,和数学整除一致)
- 例如:
new BigInteger("10").divide(new BigInteger("3"))会抛异常,因为 10 ÷ 3 不是整数
如何安全地做带余数的大整数除法
实际开发中更多需要的是“商 + 余数”组合。推荐搭配使用 divideAndRemainder() 方法:
分析 Java Spring Boot 后端 Controller 代码,自动生成 Markdown 格式的接口文档。当用户说“生成 Java 接口文档”、“生成 API 文档”、“从 Spring 代码生成文档”时触发。
- 调用
divideAndRemainder()返回长度为 2 的 BigInteger 数组:[quotient, remainder] - 它总能成功(只要除数非零),不依赖是否整除
- 例如:
BigInteger[] qr = bigA.divideAndRemainder(bigB);→qr[0]是商,qr[1]是余数
处理负数时的注意事项
BigInteger 的除法规则与 Java 基本类型一致:商向零取整,余数符号与被除数相同。
立即学习“Java免费学习笔记(深入)”;
-
new BigInteger("-10").divide(new BigInteger("3"))→ 结果是-3(不是 -4) -
new BigInteger("-10").remainder(new BigInteger("3"))→ 结果是-1 - 验证:-3 × 3 + (-1) = -10,满足
dividend = quotient × divisor + remainder
替代方案:使用 divideToIntegralValue()(可选)
如果只需要商、且允许非整除场景下“向零取整”的近似商(类似整数除法),可用 divideToIntegralValue():
- 它不会抛异常,对任意非零除数都返回向零取整的商
- 例如:
new BigInteger("10").divideToIntegralValue(new BigInteger("3"))返回3 - 注意:它不提供余数,如需余数仍应优先用
divideAndRemainder()

















