最近业务中有一个百分比的计算需求,参考过其他计算百分比的方法发现比较繁琐,这里提供一个通用并且可以保证精度的计算方法,使用一行代码就可以实现百分数计算,下面说一下实现方式。
    这里使用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,可以理解为四舍五入。
    如果感觉有所帮助欢迎点赞关注和评论!

java中一行代码实现百分数计算相关推荐

  1. Java中普通代码块,构造代码块,静态代码块区别

    Java中普通代码块,构造代码块,静态代码块区别及代码 示例 //执行顺序:(优先级从高到低.)静态代码块>mian方法 >构造代码块>构造方法. 其中静态代码块只执行一次.构造代码 ...

  2. java中static代码块_static怎样在java中修改代码块?

    代码是我们每个学编程的小伙伴都接触的内容,在代码块的修改上有很多方法,那么在java中又需要使用哪种方式来对代码块进行变动呢?哦们最近在学关键字的版块,其中有一个static用来修饰代码块的效果非常不 ...

  3. Java中static代码块,main函数,构造函数运行顺序

    1.Java中static代码块,main函数,构造函数运行顺序如下: 答:static代码块是主动执行的,因此static代码块先执行,然后是执行构造函数,最后是Main函数. 如下例子: publ ...

  4. java中的数组长度的计算

    讲到了java中数组的长度的计算,那就是少不了了那个java中的数组的定义. int a[]=new int[5]; String[]str=new String[]; String[]str=new ...

  5. java一行交换,在C / C ++,Python,PHP和Java中一行交换两个变量

    在本教程中,我们将学习如何交换不同语言的两个变量.交换意味着交换两个变量的值.让我们来看一个例子. 输入值a = 3 b = 5 输出结果a = 5 b = 3 让我们一一看. Python 我们可以 ...

  6. Spring Boot 中一行代码搞定Http请求!

    在Java的世界中,Http客户端之前一直是Apache家的HttpClient占据主导,但是由于此包较为庞大,API又比较难用,因此并不使用很多场景.而新兴的OkHttp.Jodd-http固然好用 ...

  7. Java中的Hash值的计算方式,java哈希算法简单数据类型的具体实现

    最近被提及Java中HashMap的一些实现及哈希冲突等,借鉴了一位老哥的部分解析,比较明白的展示hash算法的应用吧 结论: 对于String.Integer等类复写了Object中的hashCod ...

  8. Java 中对象占用内存大小计算

    原文地址 mp.weixin.qq.com byte 与 bit bit:位,比特.信息的最小单位,二进制数中的一个位数 (二进制位),其值为"0" 或"1": ...

  9. java中普通代码块,构造代码块,静态代码块的区别及代码示例

    本文转自:http://www.cnblogs.com/sophine/p/3531282.html 执行顺序:(优先级从高到低)静态代码块>main方法>构造代码块>构造方法. 其 ...

  10. java中静态代码块的用法 static用法详解(转)

    (一)java 静态代码块 静态方法区别 一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程 ...

最新文章

  1. 《Spring 5 官方文档》18. Web MVC 框架(五)
  2. OpenCvSharp_FindContours函数参数详解
  3. xUtils简介及其使用方法
  4. 使用component小程序
  5. 一款嵌入式监听地图测试软件(开发)
  6. 聊聊Function的bind()
  7. 流与文件 java_java流与文件处理,请看代码:
  8. ffmpeg for iOS,并调试iFrameExtractor demo
  9. oracle删除实体,oracle 按条件删除、查询表
  10. 秋式开源团队,欢迎您的加入!
  11. 循环数组最大字段和(51Nod-1050)
  12. 外媒:ATT宣布加入SD-WAN阵营
  13. 【Elasticsearch】腾讯万亿级 Elasticsearch 内存效率提升解密 源码级别 性能优化
  14. linux tcp socket 接收的字节数与发送的字节数不符,TCP发送接口(如send(),write()等)的返回值与成功发送到接收端的数据量无直接关系...
  15. 用Dell光盘安装系统
  16. 网易博客 android,android编译环境
  17. 手机微信和QQ接收到的文件路径
  18. 马斯克辞任CEO,产品经理如何用项目协作软件武装自己?
  19. iOS端如何实现带UI截屏分享
  20. Python Ews exchange发送邮件demo

热门文章

  1. 街头篮球手游服务器维护,街头篮球手游2017.6.22维护更新公告 宝箱位置调整更新一览...
  2. freemyapps 推荐链接
  3. 2022-2028年中国铝合金行业市场运营格局及前景战略分析报告
  4. FieldTrip toolbox教程系列(1)-预处理-读取连续的EEG和MEG数据
  5. Andre Weil的一生
  6. 虚拟机安装ubuntu的相关经验总结及常见疑问
  7. 2019年安徽百所高校百万大学生科普创意创新大赛作品
  8. hishop6.0和易分销2.0数据库迁移手册
  9. 织梦标签调用:根据特定需求调用文章的标签代码
  10. React系列之生命周期