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

This commit is contained in:
Looly
2025-12-25 22:24:17 +08:00
parent 2b9d3fbbd8
commit 57ecdd41a8
2 changed files with 33 additions and 0 deletions

View File

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

View File

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