diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/lang/page/PageInfo.java b/hutool-core/src/main/java/org/dromara/hutool/core/lang/page/PageInfo.java
index 88b7517c6..d36f0ccfc 100644
--- a/hutool-core/src/main/java/org/dromara/hutool/core/lang/page/PageInfo.java
+++ b/hutool-core/src/main/java/org/dromara/hutool/core/lang/page/PageInfo.java
@@ -15,6 +15,7 @@ package org.dromara.hutool.core.lang.page;
import org.dromara.hutool.core.lang.Assert;
import org.dromara.hutool.core.lang.DefaultSegment;
import org.dromara.hutool.core.lang.Segment;
+import org.dromara.hutool.core.math.NumberUtil;
/**
* 分页信息,通过提供的总数、页码、每页记录数等信息,计算总页数等信息
@@ -84,9 +85,7 @@ public class PageInfo {
pageSize = DEFAULT_PAGE_SIZE;
}
this.pageSize = pageSize;
- // 因为总条数除以页大小的最大余数是页大小数-1,
- // 因此加一个最大余数,保证舍弃的余数与最大余数凑1.x,就是一旦有余数则+1页
- this.pageCount = (total + pageSize - 1) / pageSize;
+ this.pageCount = NumberUtil.count(total, pageSize);
}
/**
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 a2468f781..032f1bebe 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
@@ -88,9 +88,9 @@ public class NumberUtil {
* 如果传入多个值为null或者空,则返回
*
*
- * 需要注意的是,在不同Locale下,数字的表示形式也是不同的,例如:
- * 德国、荷兰、比利时、丹麦、意大利、罗马尼亚和欧洲大多地区使用`,`区分小数
- * 也就是说,在这些国家地区,1.20表示120,而非1.2。
+ * 需要注意的是,在不同Locale下,数字的表示形式也是不同的,例如:
+ * 德国、荷兰、比利时、丹麦、意大利、罗马尼亚和欧洲大多地区使用`,`区分小数
+ * 也就是说,在这些国家地区,1.20表示120,而非1.2。
*
- * 四舍六入五成双是一种比较精确比较科学的计数保留法,是一种数字修约规则。 - *
- * - *- * 算法规则: - * 四舍六入五考虑, - * 五后非零就进一, - * 五后皆零看奇偶, - * 五前为偶应舍去, - * 五前为奇要进一。 - *- * - * @param value 需要科学计算的数据 - * @param scale 保留的小数位 - * @return 结果 - * @since 4.1.0 - */ - public static BigDecimal roundHalfEven(final BigDecimal value, final int scale) { - return round(value, scale, RoundingMode.HALF_EVEN); + return round(toBigDecimal(number), scale, RoundingMode.HALF_EVEN); } /** @@ -518,19 +509,7 @@ public class NumberUtil { * @since 4.1.0 */ public static BigDecimal roundDown(final Number number, final int scale) { - return roundDown(toBigDecimal(number), scale); - } - - /** - * 保留固定小数位数,舍去多余位数 - * - * @param value 需要科学计算的数据 - * @param scale 保留的小数位 - * @return 结果 - * @since 4.1.0 - */ - public static BigDecimal roundDown(final BigDecimal value, final int scale) { - return round(value, scale, RoundingMode.DOWN); + return round(toBigDecimal(number), scale, RoundingMode.DOWN); } // endregion @@ -1285,14 +1264,21 @@ public class NumberUtil { /** * 计算等份个数 + *
+ * (每份2)12 34 57 + * (每份3)123 456 7 + * (每份4)1234 567 + ** - * @param total 总数 - * @param part 每份的个数 + * @param total 总数 + * @param pageSize 每份的个数 * @return 分成了几份 * @since 3.0.6 */ - public static int count(final int total, final int part) { - return (total % part == 0) ? (total / part) : (total / part + 1); + public static int count(final int total, final int pageSize) { + // 因为总条数除以页大小的最大余数是页大小数-1, + // 因此加一个最大余数,保证舍弃的余数与最大余数凑1.x,就是一旦有余数则+1页 + return (total + pageSize - 1) / pageSize; } /** @@ -1303,7 +1289,6 @@ public class NumberUtil { * @since 3.0.9 */ public static BigDecimal null2Zero(final BigDecimal decimal) { - return decimal == null ? BigDecimal.ZERO : decimal; } @@ -1711,9 +1696,9 @@ public class NumberUtil { * 此方法不支持科学计数法 * *
- * 需要注意的是,在不同Locale下,数字的表示形式也是不同的,例如:
- * 德国、荷兰、比利时、丹麦、意大利、罗马尼亚和欧洲大多地区使用`,`区分小数
- * 也就是说,在这些国家地区,1.20表示120,而非1.2。
+ * 需要注意的是,在不同Locale下,数字的表示形式也是不同的,例如:
+ * 德国、荷兰、比利时、丹麦、意大利、罗马尼亚和欧洲大多地区使用`,`区分小数
+ * 也就是说,在这些国家地区,1.20表示120,而非1.2。
*
- * 需要注意的是,在不同Locale下,数字的表示形式也是不同的,例如:
- * 德国、荷兰、比利时、丹麦、意大利、罗马尼亚和欧洲大多地区使用`,`区分小数
- * 也就是说,在这些国家地区,1.20表示120,而非1.2。
+ * 需要注意的是,在不同Locale下,数字的表示形式也是不同的,例如:
+ * 德国、荷兰、比利时、丹麦、意大利、罗马尼亚和欧洲大多地区使用`,`区分小数
+ * 也就是说,在这些国家地区,1.20表示120,而非1.2。
*