diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/math/NumberUtil.java b/hutool-core/src/main/java/org/dromara/hutool/core/math/NumberUtil.java index 332d530b3..a756290ca 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/math/NumberUtil.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/math/NumberUtil.java @@ -1012,17 +1012,6 @@ public class NumberUtil extends NumberValidator { return (total + pageSize - 1) / pageSize; } - /** - * 空转0 - * - * @param decimal {@link BigDecimal},可以为{@code null} - * @return {@link BigDecimal}参数为空时返回0的值 - * @since 3.0.9 - */ - public static BigDecimal null2Zero(final BigDecimal decimal) { - return ObjUtil.defaultIfNull(decimal, BigDecimal.ZERO); - } - /** * 如果给定值为0,返回1,否则返回原值 * @@ -1030,10 +1019,93 @@ public class NumberUtil extends NumberValidator { * @return 1或非0值 * @since 3.1.2 */ - public static int zero2One(final int value) { + public static int zeroToOne(final int value) { return 0 == value ? 1 : value; } + // region nullToZero + /** + * 如果给定值为0,返回1,否则返回原值 + * + * @param number 值 + * @return 1或非0值 + */ + public static int nullToZero(final Integer number) { + return number == null ? 0 : number; + } + + /** + * 如果给定值为0,返回1,否则返回原值 + * + * @param number 值 + * @return 1或非0值 + */ + public static long nullToZero(final Long number) { + return number == null ? 0L : number; + } + + /** + * 如果给定值为0,返回1,否则返回原值 + * + * @param number 值 + * @return 1或非0值 + */ + public static double nullToZero(final Double number) { + return number == null ? 0.0 : number; + } + + /** + * 如果给定值为0,返回1,否则返回原值 + * + * @param number 值 + * @return 1或非0值 + */ + public static float nullToZero(final Float number) { + return number == null ? 0.0f : number; + } + + /** + * 如果给定值为0,返回1,否则返回原值 + * + * @param number 值 + * @return 1或非0值 + */ + public static short nullToZero(final Short number) { + return number == null ? (short) 0 : number; + } + + /** + * 如果给定值为0,返回1,否则返回原值 + * + * @param number 值 + * @return 1或非0值 + */ + public static byte nullToZero(final Byte number) { + return number == null ? (byte) 0 : number; + } + + /** + * 如果给定值为0,返回1,否则返回原值 + * + * @param number 值 + * @return 1或非0值 + */ + public static BigInteger nullToZero(final BigInteger number) { + return number == null ? BigInteger.ZERO : number; + } + + /** + * 空转0 + * + * @param decimal {@link BigDecimal},可以为{@code null} + * @return {@link BigDecimal}参数为空时返回0的值 + * @since 3.0.9 + */ + public static BigDecimal nullToZero(final BigDecimal decimal) { + return ObjUtil.defaultIfNull(decimal, BigDecimal.ZERO); + } + // endregion + /** * 创建{@link BigInteger},支持16进制、10进制和8进制,如果传入空白串返回null
* from Apache Common Lang diff --git a/hutool-core/src/test/java/org/dromara/hutool/core/util/NumberUtilTest.java b/hutool-core/src/test/java/org/dromara/hutool/core/util/NumberUtilTest.java index 498e1f4c1..8d09d53b8 100644 --- a/hutool-core/src/test/java/org/dromara/hutool/core/util/NumberUtilTest.java +++ b/hutool-core/src/test/java/org/dromara/hutool/core/util/NumberUtilTest.java @@ -21,6 +21,7 @@ import org.junit.jupiter.api.condition.EnabledForJreRange; import org.junit.jupiter.api.condition.JRE; import java.math.BigDecimal; +import java.math.BigInteger; import java.math.RoundingMode; import java.text.NumberFormat; import java.text.ParseException; @@ -754,4 +755,17 @@ public class NumberUtilTest { "123,456,789.111111", NumberUtil.formatThousands(123456789.111111D, 6)); } + + @Test + void nullToZeroTest() { + Assertions.assertEquals(0, NumberUtil.nullToZero((Integer)null)); + Assertions.assertEquals(0L, NumberUtil.nullToZero((Long)null)); + Assertions.assertEquals(0D, NumberUtil.nullToZero((Double)null)); + Assertions.assertEquals(0D, NumberUtil.nullToZero((Double)null)); + Assertions.assertEquals(0F, NumberUtil.nullToZero((Float) null)); + Assertions.assertEquals(0, NumberUtil.nullToZero((Short) null)); + Assertions.assertEquals(0, NumberUtil.nullToZero((Byte) null)); + Assertions.assertEquals(BigDecimal.ZERO, NumberUtil.nullToZero((BigDecimal) null)); + Assertions.assertEquals(BigInteger.ZERO, NumberUtil.nullToZero((BigInteger) null)); + } }