diff --git a/hutool-core/src/main/java/cn/hutool/v7/core/math/NumberParser.java b/hutool-core/src/main/java/cn/hutool/v7/core/math/NumberParser.java index 2a8763a98b..3784af6a67 100644 --- a/hutool-core/src/main/java/cn/hutool/v7/core/math/NumberParser.java +++ b/hutool-core/src/main/java/cn/hutool/v7/core/math/NumberParser.java @@ -17,6 +17,7 @@ package cn.hutool.v7.core.math; import cn.hutool.v7.core.array.ArrayUtil; +import cn.hutool.v7.core.convert.ConvertUtil; import cn.hutool.v7.core.text.CharUtil; import cn.hutool.v7.core.text.StrUtil; @@ -370,6 +371,9 @@ public class NumberParser { numberStr = StrUtil.subSuf(numberStr, 1); } + // issue@4197@Github 转为半角 + numberStr = ConvertUtil.toDBC(numberStr); + try { final NumberFormat format = NumberFormat.getInstance(locale); if (format instanceof DecimalFormat) { diff --git a/hutool-json/src/test/java/cn/hutool/v7/json/issues/Issue4197Test.java b/hutool-json/src/test/java/cn/hutool/v7/json/issues/Issue4197Test.java new file mode 100644 index 0000000000..997a0a65c3 --- /dev/null +++ b/hutool-json/src/test/java/cn/hutool/v7/json/issues/Issue4197Test.java @@ -0,0 +1,29 @@ +package cn.hutool.v7.json.issues; + +import cn.hutool.v7.json.JSONUtil; +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()); + } + +}