Closed flyunet closed 1 week ago
JDK版本: openjdk_21 hutool版本: 5.8.32
static class Dto { public BigDecimal remain; } public static void main(String[] args) { BigDecimal bigDecimal = new BigDecimal("0.01"); bigDecimal = bigDecimal.setScale(4, BigDecimal.ROUND_HALF_UP); System.out.println(bigDecimal); Dto dto = new Dto(); dto.remain = bigDecimal; System.out.println(JSONUtil.toJsonStr(dto)); }
JSONUtil.toJsonStr在BigDecimal的序列化处理后丢失了精度。
5.8.33 仍然存在此问题,用Map、List等容器包装也会重现精度丢失的问题。
@flyunet JSON配置中有个setStripTrailingZeros表示是否默认去除末尾多余0,默认true。你可以:
setStripTrailingZeros
JSONUtil.toJsonStr(dto, JSONConfig.create().setStripTrailingZeros(false));
版本情况
JDK版本: openjdk_21 hutool版本: 5.8.32
问题描述
JSONUtil.toJsonStr在BigDecimal的序列化处理后丢失了精度。