在 Java 里需要先澄清一个概念:BigDecimal 并不只是“任意精度整数”,它是任意精度的“十进制浮点数”(可以理解为 BigInteger + 小数点位置)。
BigDecimal 能存多大?BigDecimal 的整数部分和小数部分长度只受内存限制BigInteger unscaledValue(未缩放值)int scale(小数位数)所以:
只要 JVM 内存够,
BigDecimal可以存任意大的数
没有像 long 那样的固定上限(±2⁶³-1)。
n 位十进制数字,大约需要:n × 4 bit ≈ n / 2 字节
BigDecimal / BigInteger 内部用 int[] 存储:
int[] mag;
int 存约 9 位十进制数✅ 所以理论上:
最大十进制位数 ≈ 2¹⁴⁷⁴⁸³⁶⁴⁷ × 9 ≈ 1.9 × 10¹⁰ 位
也就是:
约 190 亿位十进制数字
BigInteger 的关系BigDecimal 的“整数能力”来自 BigIntegerBigInteger a = new BigInteger("123456789...");
BigDecimal b = new BigDecimal(a);
BigInteger 同样:
BigDecimal?不适合的场景:
double / BigFloat 更好)Java 的
BigDecimal可以存“任意大”的数,只要内存够;实际极限约为 190 亿位十进制数字,但性能会非常差。
如果你愿意,我也可以:
BigDecimal vs BigInteger vs double免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。