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 33f908261..87040d6cb 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 @@ -2556,16 +2556,16 @@ public class NumberUtil { return 0; } - if(StrUtil.containsIgnoreCase(number, "E")){ - // 科学计数法忽略支持,科学计数法一般用于表示非常小和非常大的数字,这类数字转换为int后精度丢失,没有意义。 - throw new NumberFormatException(StrUtil.format("Unsupported int format: [{}]", number)); - } - if (StrUtil.startWithIgnoreCase(number, "0x")) { // 0x04表示16进制数 return Integer.parseInt(number.substring(2), 16); } + if(StrUtil.containsIgnoreCase(number, "E")){ + // 科学计数法忽略支持,科学计数法一般用于表示非常小和非常大的数字,这类数字转换为int后精度丢失,没有意义。 + throw new NumberFormatException(StrUtil.format("Unsupported int format: [{}]", number)); + } + try { return Integer.parseInt(number); } catch (NumberFormatException e) { diff --git a/hutool-core/src/test/java/cn/hutool/core/util/NumberUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/util/NumberUtilTest.java index f86bf884b..bf69c1603 100644 --- a/hutool-core/src/test/java/cn/hutool/core/util/NumberUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/util/NumberUtilTest.java @@ -273,8 +273,8 @@ public class NumberUtilTest { @Test public void parseIntTest() { - int number = NumberUtil.parseInt("0xFF"); - Assert.assertEquals(255, number); + int number = NumberUtil.parseInt("0xFE"); + Assert.assertEquals(254, number); // 0开头 number = NumberUtil.parseInt("010");