diff --git a/CHANGELOG.md b/CHANGELOG.md index d4523e7ff4..256fe69564 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,7 @@ # 🚀Changelog ------------------------------------------------------------------------------------------------------------- -# 5.8.43(2025-12-24) +# 5.8.43(2025-12-25) ### 🐣新特性 * 【core 】 `ColorUtil`颜色名称DARKGOLD、LIGHTGOLD新增蛇形命名匹配(pr#1400@Github) @@ -17,6 +17,7 @@ * 【bloomFilter】 修复`AbstractFilter`的`init`方法在`maxValue`小于`machineNum`时导致数组越界异常(pr#4189@Github) * 【ai 】 修复`Models`枚举命名大小写混用问题(pr#4185@Github) * 【core 】 修复 `ThreadUtil.getMainThread`在JDK25中返回null的问题(pr#1416@Gitee) +* 【core 】 修复 `NumberUtil.parseNumber`使用中文逗号导致识别问题(issue#4197@Github) ------------------------------------------------------------------------------------------------------------- # 5.8.42(2025-11-28) diff --git a/hutool-core/src/main/java/cn/hutool/core/util/NumberUtil.java b/hutool-core/src/main/java/cn/hutool/core/util/NumberUtil.java index a90bd0d1f8..8c345ec0e6 100755 --- a/hutool-core/src/main/java/cn/hutool/core/util/NumberUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/util/NumberUtil.java @@ -1,5 +1,6 @@ package cn.hutool.core.util; +import cn.hutool.core.convert.Convert; import cn.hutool.core.exceptions.UtilException; import cn.hutool.core.lang.Assert; import cn.hutool.core.math.Calculator; @@ -2779,6 +2780,9 @@ public class NumberUtil { numberStr = StrUtil.subSuf(numberStr, 1); } + // issue@4197@Github 转为半角 + numberStr = Convert.toDBC(numberStr); + try { final NumberFormat format = NumberFormat.getInstance(); if (format instanceof DecimalFormat) { diff --git a/hutool-json/src/test/java/cn/hutool/json/Issue4197Test.java b/hutool-json/src/test/java/cn/hutool/json/Issue4197Test.java new file mode 100644 index 0000000000..4cd56defbf --- /dev/null +++ b/hutool-json/src/test/java/cn/hutool/json/Issue4197Test.java @@ -0,0 +1,26 @@ +package cn.hutool.json; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import java.math.BigDecimal; + +public class Issue4197Test { + @Data + @NoArgsConstructor + @AllArgsConstructor + static + class TestDTO { + + private BigDecimal h; + } + + @Test + void toBeanTest() { + final TestDTO bean = JSONUtil.toBean("{\"h\":\"123,456,789\"}", TestDTO.class); + Assertions.assertEquals(new BigDecimal("123456789"), bean.getH()); + } +}