From 61b9e81dd00e3beff766c0425d0c3a551510e178 Mon Sep 17 00:00:00 2001 From: Looly Date: Tue, 30 Jul 2024 23:07:46 +0800 Subject: [PATCH] fix code --- .../dromara/hutool/core/math/NumberUtil.java | 209 ++++++++---------- 1 file changed, 91 insertions(+), 118 deletions(-) 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 6c3cfae38..d3cc57c00 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 @@ -327,124 +327,6 @@ public class NumberUtil extends NumberValidator { // region ----- round - /** - * 保留固定位数小数
- * 采用四舍五入策略 {@link RoundingMode#HALF_UP}
- * 例如保留2位小数:123.456789 =》 123.46 - * - * @param v 值 - * @param scale 保留小数位数 - * @return 新值 - */ - public static BigDecimal round(final double v, final int scale) { - return round(v, scale, RoundingMode.HALF_UP); - } - - /** - * 保留固定位数小数
- * 采用四舍五入策略 {@link RoundingMode#HALF_UP}
- * 例如保留2位小数:123.456789 =》 123.46 - * - * @param v 值 - * @param scale 保留小数位数 - * @return 新值 - */ - public static String roundStr(final double v, final int scale) { - return round(v, scale).toPlainString(); - } - - /** - * 保留固定位数小数
- * 采用四舍五入策略 {@link RoundingMode#HALF_UP}
- * 例如保留2位小数:123.456789 =》 123.46 - * - * @param number 数字值 - * @param scale 保留小数位数 - * @return 新值 - * @since 4.1.0 - */ - public static BigDecimal round(final BigDecimal number, final int scale) { - return round(number, scale, RoundingMode.HALF_UP); - } - - /** - * 保留固定位数小数
- * 采用四舍五入策略 {@link RoundingMode#HALF_UP}
- * 例如保留2位小数:123.456789 =》 123.46 - * - * @param numberStr 数字值的字符串表现形式 - * @param scale 保留小数位数 - * @return 新值 - * @since 3.2.2 - */ - public static String roundStr(final String numberStr, final int scale) { - return roundStr(numberStr, scale, RoundingMode.HALF_UP); - } - - /** - * 保留固定位数小数
- * 例如保留四位小数:123.456789 =》 123.4567 - * - * @param v 值 - * @param scale 保留小数位数 - * @param roundingMode 保留小数的模式 {@link RoundingMode} - * @return 新值 - */ - public static BigDecimal round(final double v, final int scale, final RoundingMode roundingMode) { - return round(toBigDecimal(v), scale, roundingMode); - } - - /** - * 保留固定位数小数
- * 例如保留四位小数:123.456789 =》 123.4567 - * - * @param v 值 - * @param scale 保留小数位数 - * @param roundingMode 保留小数的模式 {@link RoundingMode} - * @return 新值 - * @since 3.2.2 - */ - public static String roundStr(final double v, final int scale, final RoundingMode roundingMode) { - return round(v, scale, roundingMode).toPlainString(); - } - - /** - * 保留固定位数小数
- * 例如保留四位小数:123.456789 =》 123.4567 - * - * @param number 数字值 - * @param scale 保留小数位数,如果传入小于0,则默认0 - * @param roundingMode 保留小数的模式 {@link RoundingMode},如果传入null则默认四舍五入 - * @return 新值 - */ - public static BigDecimal round(BigDecimal number, int scale, RoundingMode roundingMode) { - if (null == number) { - number = BigDecimal.ZERO; - } - if (scale < 0) { - scale = 0; - } - if (null == roundingMode) { - roundingMode = RoundingMode.HALF_UP; - } - - return number.setScale(scale, roundingMode); - } - - /** - * 保留固定位数小数
- * 例如保留四位小数:123.456789 =》 123.4567 - * - * @param numberStr 数字值的字符串表现形式 - * @param scale 保留小数位数 - * @param roundingMode 保留小数的模式 {@link RoundingMode} - * @return 新值 - * @since 3.2.2 - */ - public static String roundStr(final String numberStr, final int scale, final RoundingMode roundingMode) { - return round(toBigDecimal(numberStr), scale, roundingMode).toPlainString(); - } - /** * 四舍六入五成双计算法 *

@@ -480,6 +362,97 @@ public class NumberUtil extends NumberValidator { public static BigDecimal roundDown(final Number number, final int scale) { return round(toBigDecimal(number), scale, RoundingMode.DOWN); } + + /** + * 保留固定位数小数
+ * 采用四舍五入策略 {@link RoundingMode#HALF_UP}
+ * 例如保留2位小数:123.456789 =》 123.46 + * + * @param number 数字值 + * @param scale 保留小数位数 + * @return 新值 + * @since 4.1.0 + */ + public static BigDecimal round(final Number number, final int scale) { + return round(number, scale, RoundingMode.HALF_UP); + } + + /** + * 保留固定位数小数
+ * 采用四舍五入策略 {@link RoundingMode#HALF_UP}
+ * 例如保留2位小数:123.456789 =》 123.46 + * + * @param numberStr 数字值的字符串表现形式 + * @param scale 保留小数位数 + * @return 新值 + * @since 3.2.2 + */ + public static String roundStr(final String numberStr, final int scale) { + return roundStr(numberStr, scale, RoundingMode.HALF_UP); + } + + /** + * 保留固定位数小数
+ * 采用四舍五入策略 {@link RoundingMode#HALF_UP}
+ * 例如保留2位小数:123.456789 =》 123.46 + * + * @param number 数字值 + * @param scale 保留小数位数 + * @return 新值 + * @since 3.2.2 + */ + public static String roundStr(final Number number, final int scale) { + return roundStr(number, scale, RoundingMode.HALF_UP); + } + + /** + * 保留固定位数小数
+ * 例如保留四位小数:123.456789 =》 123.4567 + * + * @param numberStr 数字值的字符串表现形式 + * @param scale 保留小数位数 + * @param roundingMode 保留小数的模式 {@link RoundingMode} + * @return 新值 + * @since 3.2.2 + */ + public static String roundStr(final String numberStr, final int scale, final RoundingMode roundingMode) { + return roundStr(toBigDecimal(numberStr), scale, roundingMode); + } + + /** + * 保留固定位数小数
+ * 例如保留四位小数:123.456789 =》 123.4567 + * + * @param number 数字值 + * @param scale 保留小数位数 + * @param roundingMode 保留小数的模式 {@link RoundingMode} + * @return 新值 + * @since 3.2.2 + */ + public static String roundStr(final Number number, final int scale, final RoundingMode roundingMode) { + return round(number, scale, roundingMode).toPlainString(); + } + + /** + * 保留固定位数小数
+ * 例如保留四位小数:123.456789 =》 123.4567 + * + * @param number 数字值 + * @param scale 保留小数位数,如果传入小于0,则默认0 + * @param roundingMode 保留小数的模式 {@link RoundingMode},如果传入null则默认四舍五入 + * @return 新值 + */ + public static BigDecimal round(final Number number, int scale, RoundingMode roundingMode) { + final BigDecimal bigDecimal = toBigDecimal(number); + if (scale < 0) { + scale = 0; + } + if (null == roundingMode) { + roundingMode = RoundingMode.HALF_UP; + } + + return bigDecimal.setScale(scale, roundingMode); + } // endregion // region ----- decimalFormat