项目中计算小数和百分比的总结
项目中经常遇到要求百分比,比如平均增长率,增长占比
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;