修复 NumberUtil.parseNumber使用中文逗号导致识别问题(issue#4197@Github)

This commit is contained in:
Looly
2025-12-25 22:24:24 +08:00
parent de93fa7670
commit 5568af2b3e
3 changed files with 32 additions and 1 deletions

View File

@@ -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)

View File

@@ -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) {

View File

@@ -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\":\"123456789\"}", TestDTO.class);
Assertions.assertEquals(new BigDecimal("123456789"), bean.getH());
}
}