在 Java 里,BigDecimal 本身不是“任意精度整数”,它是任意精度的十进制浮点数(可带小数)。
如果你想要的是任意精度整数,正确的类是 java.math.BigInteger。
下面分两部分说清楚:
import java.math.BigInteger;
BigInteger a = new BigInteger("123456789012345678901234567890");
BigInteger b = BigInteger.valueOf(100); // 小整数推荐这种方式
⚠️ 不要用 new BigInteger(123)(没有这个构造)
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); // 取模
a.compareTo(b); // 比较:-1, 0, 1
a.pow(10); // 幂
a.gcd(b); // 最大公约数
a.isProbablePrime(10); // 是否可能是质数
long x = a.longValue(); // 可能溢出
String s = a.toString();
BigDecimal 也可以表示没有小数部分的任意精度数:
import java.math.BigDecimal;
BigDecimal a = new BigDecimal("123456789012345678901234567890");
BigDecimal b = BigDecimal.ZERO;
BigDecimal sum = a.add(b);
⚠️ 注意:
1.0)BigDecimal c = a.setScale(0, RoundingMode.DOWN);
| 需求 | 用哪个 |
|---|---|
| 整数运算 | ✅ BigInteger |
| 金额 / 小数 | ✅ BigDecimal |
| 高精度整数 | ✅ BigInteger |
| 科学计算 | ❌ 都不适合(用 double / 第三方库) |
任意精度整数 = BigInteger
任意精度小数 = BigDecimal
如果你有具体场景(比如:超大整数运算 / 金额计算 / 幂运算),我可以给你更合适的示例代码。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。