栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

	
			cn.hutool
			hutool-all
			4.1.14
		

    用到的工具类: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,可以理解为四舍五入。
    如果感觉有所帮助欢迎点赞关注和评论!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/886087.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号