From 32e29438d7be0d0279443f9cdfc643aaaa46a216 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=81=AByzs?= <835476090@qq.com> Date: Tue, 4 May 2021 15:00:49 +0800 Subject: [PATCH] =?UTF-8?q?NumberUtil=E7=B1=BB=E6=B7=BB=E5=8A=A0percent?= =?UTF-8?q?=E6=96=B9=E6=B3=95=E2=9C=92=EF=B8=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/hutool/core/util/NumberUtil.java | 25 +++++++++++++++++++ .../cn/hutool/core/util/NumberUtilTest.java | 10 ++++++++ 2 files changed, 35 insertions(+) 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 392e4ce63..644d5c154 100644 --- a/hutool-core/src/main/java/cn/hutool/core/util/NumberUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/util/NumberUtil.java @@ -765,6 +765,18 @@ public class NumberUtil { return (int) Math.ceil((double) v1 / v2); } + /** + * 求百分比(取整) (3,10) => 30 + * + * @param num 当前num + * @param total 总长度 + * @return int 百分比(取整) + * @since 5.6.5 + */ + public static int percent(int num, int total) { + return (int) ((float) num / (float) total * 100); + } + // ------------------------------------------------------------------------------------------- round /** @@ -1082,6 +1094,19 @@ public class NumberUtil { return format.format(number); } + /** + * 求百分比(带精度)(带百分号后缀) (3,10,0) => 30% + * + * @param num 当前num + * @param total 总长度 + * @param scale 精度(保留小数点后几位) + * @return String 百分比(带百分号后缀) + * @since 5.6.5 + */ + public static String formatPercent(Number num, Number total, int scale) { + return formatPercent(num.doubleValue() / total.doubleValue(), scale); + } + // ------------------------------------------------------------------------------------------- isXXX /** 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 7a7e437f3..838dc79b9 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 @@ -178,10 +178,20 @@ public class NumberUtilTest { Assert.assertTrue(NumberUtil.equals(new BigDecimal("0.00"), BigDecimal.ZERO)); } + @Test + public void percentTest(){ + Assert.assertEquals(30, NumberUtil.percent(3, 10)); + Assert.assertEquals(20, NumberUtil.percent(1, 5)); + } + @Test public void formatPercentTest() { String str = NumberUtil.formatPercent(0.33543545, 2); Assert.assertEquals("33.54%", str); + + Assert.assertEquals("30%", NumberUtil.formatPercent(3, 10, 0)); + Assert.assertEquals("33.33%", NumberUtil.formatPercent(1, 3, 2)); + Assert.assertEquals("33.333%", NumberUtil.formatPercent(1, 3, 3)); } @Test