项目问题反馈:对后台查询的结果列表进行处理:计算平均值,改变小数点位数

问题描述:改变前端界面显示,小数点保留2位。

看了一下后台的查询语句,多层嵌套,关联。使用convert 或者select cast('xx' as decimal())没有很好的解决问题方法。主要针对一列结果。

想到jstl的fmt,遂使用如下解决办法。

<c:if test="${fn:trim(reports.finishrate)!=''}"><fmt:formatNumber value="${reports.finishrate}" pattern="##.##" minFractionDigits="2" ></fmt:formatNumber></c:if>
问题顺利解决。



问题描述:后台查询的结果为List<CData>集合 逐条显示在界面上。1>现需增加一行,统计整张表各列平均值。2>masipack称的空显示为1。用于计算平均值。

前端代码如下:实现2位小数、判断字段包括masipack时取值为1、

<c:choose>
	<c:when test="${fn:contains(reports.lineno,'masipack')}">
		<c:if test="${fn:trim(reports.finishrate)==' '}">1</c:if>
		<c:if test="${fn:trim(reports.finishrate)!=' '}"><fmt:formatNumber value="${reports.finishrate}" pat<span style="white-space:pre">		</span>tern="##.##" minFractionDigits="2" ></fmt:formatNumber></c:if>
	</c:when>
	<c:otherwise>
		<c:if test="${fn:trim(reports.finishrate)==' '}">0</c:if>
		<c:if test="${fn:trim(reports.finishrate)!=' '}"><fmt:formatNumber value="${reports.finishrate}" pat<span style="white-space:pre">		</span>tern="##.##" minFractionDigits="2" ></fmt:formatNumber></c:if>
	</c:otherwise>
</c:choose>
后台代码如下:重点是CData Object类型转成float 进行计算 Object只要不带其他字符可以转换成很多种数字类型。注意有些转换方式即使转换成功,但会出现错误值。

if(list.size()!=0){
			System.out.println(list.size());
			int i=0;
			float finishrate=0;//
			float accorrate=0;
			float counts=0;
			for(;i<list.size();i++){
				if(list.get(i).getString("lineno").contains("masipack")){
					finishrate+=1;
					accorrate+=Float.valueOf(list.get(i).get("accorrate").toString());	
					try{						
						counts+=Float.valueOf(list.get(i).get("counts").toString());
					}
					catch(Exception e){						
						counts+=0;
					}
				}
				else{					
					try{						
						finishrate+=Float.valueOf(list.get(i).get("finishrate").toString());
					}
					catch(Exception e){						
						finishrate+=0;
					}						
					accorrate+=Float.valueOf(list.get(i).get("accorrate").toString());	
					try{						
						counts+=Float.valueOf(list.get(i).get("counts").toString());	
					}
					catch(Exception e){						
						counts+=0;
					}					
				}
			}
			float finishrateavg=0;
			float accorrateavg=0;
			float countsavg=0;
			int size=list.size();
			finishrateavg=finishrate/size;
			accorrateavg=accorrate/size;
			countsavg=counts/size;
			list.get(0).set("finishrateavg", finishrateavg);
			list.get(0).set("accorrateavg", accorrateavg);
			list.get(0).set("countsavg", countsavg);
			}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值