在 Java 里,BigDecimal 本身不是整数类型,它是“任意精度的十进制数”(unscaledValue × 10^-scale)。
如果你说的“任意精度整数”是指:
BigDecimal 表示整数值(scale = 0)BigInteger下面分情况说明 序列化方式。
BigDecimal(整数语义)推荐:直接序列化为字符串
{
"amount": "123456789012345678901234567890"
}
Java 示例(Jackson):
public class Order {
@JsonFormat(shape = JsonFormat.Shape.STRING)
public BigDecimal amount;
}
✅ 原因:
BigDecimal 实现了 Serializable,可以直接序列化:
ObjectOutputStream oos = new ObjectOutputStream(out);
oos.writeObject(bigDecimal);
❌ 缺点:
DECIMAL(65,0) 或 BIGINT(不够时 DECIMAL)NUMERICBigIntegerBigInteger big = new BigInteger("123456789012345678901234567890");
@JsonFormat(shape = JsonFormat.Shape.STRING)
public BigInteger id;
byte[] data = bigInteger.toByteArray();
BigInteger back = new BigInteger(data);
String s = bigInteger.toString();
BigInteger back = new BigInteger(s);
| 场景 | 推荐方式 |
|---|---|
| 前后端 JSON | 字符串 |
| 内部存储 | BigInteger / BigDecimal |
| 二进制传输 | toByteArray() |
| 跨语言 | 字符串 |
如果你能补充:
我可以给你 最合适的序列化方案 + 示例代码。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。