在 Java 里,BigDecimal 本身就是任意精度的十进制数(不是“任意精度整数”,但整数也可以用它来表示)。
如果你的需求是大整数乘法,通常更推荐用 BigInteger;如果一定要用 BigDecimal,也可以直接乘。
下面分情况说明。
BigDecimal 做乘法(任意精度)import java.math.BigDecimal;
BigDecimal a = new BigDecimal("123456789012345678901234567890");
BigDecimal b = new BigDecimal("987654321098765432109876543210");
BigDecimal result = a.multiply(b);
System.out.println(result);
✅ 特点:
BigDecimal 乘法不会自动四舍五入,如果涉及小数,需要指定舍入模式:
BigDecimal result = a.multiply(b)
.setScale(2, BigDecimal.ROUND_HALF_UP);
常用舍入模式:
RoundingMode.HALF_UP(四舍五入)RoundingMode.DOWNRoundingMode.UPBigInteger如果你明确知道是整数运算,更推荐:
import java.math.BigInteger;
BigInteger a = new BigInteger("123456789012345678901234567890");
BigInteger b = new BigInteger("987654321098765432109876543210");
BigInteger result = a.multiply(b);
System.out.println(result);
✅ 优点:
BigDecimal vs BigInteger 选择建议| 场景 | 推荐 |
|---|---|
| 纯整数大数运算 | BigInteger |
| 金额、小数、精确的十进制 | BigDecimal |
| 需要控制小数位数 | BigDecimal |
❌ 不要用 double 构造 BigDecimal
new BigDecimal(0.1) // 精度问题
✅ 正确方式
new BigDecimal("0.1")
如果你愿意,可以告诉我:
我可以给你更合适的方案。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。