java中一行代码实现百分数计算

    最近业务中有一个百分比的计算需求,参考过其他计算百分比的方法发现比较繁琐,这里提供一个通用并且可以保证精度的计算方法,使用一行代码就可以实现百分数计算,下面说一下实现方式。
    这里使用hutool中的工具类
    需要的依赖:

	<dependency>
			<groupId>cn.hutool</groupId>
			<artifactId>hutool-all</artifactId>
			<version>4.1.14</version>
		</dependency>

    用到的工具类:NumberUtil,百分数具体计算方式参考如下:

// 参数一:除数;参数2:被除数;参数三:小数点后保留的位数,舍入模式模式为四舍五入,符合大多数计算场景
 int div3 = NumberUtil.div("1", "3",2).multiply(BigDecimal.valueOf(100)).intValue();
        System.out.println(div3+"%");  // 33%

    使用一行代码可以实现保留指定位数的百分数计算场景,对于NumberUtil中div封装api感兴趣的同学可以继续往下看。
    java中除法一般用/,但是int类相除最终获取的结果是整数,所以不用考虑。

 public static void main(String[] args) {
        System.out.println(2/3);  // 0
    }

    考虑到精度会想到:float double bigdecimal,三者精度优先级是 bigdecimal> double > float .这里重点介绍bigdecimal,优点是精度相对比较高,并且可以指定获取的位数,对于精度支持8种舍入模式。
    NumberUtil中div就是基于bigdecimal中divide和八种舍入模式进行的封装。实际执行的就是:
BigDecimal中的divide

 public BigDecimal divide(BigDecimal divisor, int scale, RoundingMode roundingMode) {
        return divide(divisor, scale, roundingMode.oldMode);
    }

舍入模式默认指定:RoundingMode.HALF_UP,可以理解为四舍五入。
    如果感觉有所帮助欢迎点赞关注和评论!

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卖柴火的小伙子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值