“月落乌啼霜满天,江枫渔火对愁眠”
很多时候,我们在用java写程序时,要展示一些数据,比如同比,占比,环比之类的,这个时候就难免会遇到小数,一般都是保留两位小数.但是会出现这种情况,保留两位小数,如果整数位是零的话,就不会显示的问题..代码是这样的.
Map<String, Object> resultMap = new HashMap<String, Object>();
List<B2bEntity> list = b2bMapper.getOrderOverview(b2bEntity);
List<String> areadescList = new ArrayList<>(); // 区域名称
List<Integer> orderList = new ArrayList<>(); //订单量
List<String> rateList = new ArrayList<>(); // 占比
DecimalFormat df = new DecimalFormat("#.00");//保留两位小数
Integer sum = 0; //总数
if(list != null && list.size() > 0) {
for (B2bEntity b2b : list) {
if(StringUtils.isNotEmpty(b2b.getAreadesc())) {
areadescList.add(b2b.getAreadesc());
orderList.add(b2b.getOrder_num());
sum += b2b.getOrder_num();
}
}
//算占比
for (Integer num : orderList) {
rateList.add(df.format(((double)(num) / (double)sum * 100)));
}
resultMap.put("areadescList",areadescList);
resultMap.put("orderList",orderList);
resultMap.put("rateList",rateList);
return resultMap;
这段代码看起来保留小数没问题,但是结果是这样的.
注意看占比中最低的两个,,,显然整数位是零,,但在这里没显示了.
那是因为DecimalFormat df = new DecimalFormat("#.00");//保留两位小数
这句代码代码中的#号,表示,如果不存在则显示为空.
所以应该这么改DecimalFormat df = new DecimalFormat("0.00");//保留两位小数
把#号改成阿拉伯数字0,这样就好啦.