java int 求百分比 保证结果综合为1
直接取保留两位小数会导致数据之和不为 1 ,
利用BigDecimal 取20 位 (根据需求取精度)
1、ROUND_UP
舍入远离零的舍入模式。
在丢弃非零部分之前始终增加数字(始终对非零舍弃部分前面的数字加1)。
注意,此舍入模式始终不会减少计算值的大小。
public static String formatProportion(Integer count,Integer totalCount){
BigDecimal countBigDecimal = new BigDecimal(count);
BigDecimal totalCountBigDecimal = new BigDecimal(totalCount);
BigDecimal divide = countBigDecimal.divide(totalCountBigDecimal, 20, BigDecimal.ROUND_UP);
for (int i=19;i>=2;i--){
divide=divide.setScale(i,BigDecimal.ROUND_HALF_UP);
System.out.println(divide);
}
return divide.toString();
}