项目中计算小数和百分比的总结

 

项目中经常遇到要求百分比,比如平均增长率,增长占比

DecimalFormat df = new DecimalFormat("0.00%");
System.out.println(df.format((float)1/3));

运行结果如下:decimalformat会自动转化小数为百分比,并且保留2位小数

 

 注意看(float)1/3  ,如果不加float的话,结果就是0

两个整数相除的结果是整数,/代表取商,%代表取余

有一个是浮点数,相除就是浮点数,

关于float和double的区别可以参考博客:https://blog.csdn.net/weixin_43791071/article/details/122361036

如果要是表示精确的数值需要使用BigDecimal

BigDecimal delta=new BigDecimal(Math.abs(sourceCtr-targetCtr));
BigDecimal tempCtrChangeRate=delta.divide(new BigDecimal(sourceCtr),10,RoundingMode.CEILING);//保留10位小数,对于除不尽的表达式需要指定结果的小数位置,否则会报错

BigDecimal运行有时候会报空指针异常:

那是因为BigDecimal的变量没有设置初始值,默认是null,可以按照下面的方式设置初始值

BigDecimal bigDecimal=BigDecimal.ZERO;

 

posted on 2023-03-08 11:11  朱古力88  阅读(67)  评论(0编辑  收藏  举报