报表四舍五入功能
需求背景:
报表在对数值型数据进行显示格式设置或者通过函数保留N位的时候,采用的“四舍六入五成双”的国际标准。这种方式比“四舍五入”更为精准。但是由于大部分用户不了解这种方式,更多的是觉得“四舍五入”比较精准。
有客户将2.005设置显示格式为:#.00之后,发现2.005变成了2.00.并就此提出一个需求,希望报表能实现四舍五入的功能。
要明确一点:这并非是报表的BUG,报表采用的是JAVA的标准取数法则。
解决思路:
保留“四舍六入五成双”的法则,新增一个四舍五入的功能,但是将“四舍六入五成双”的法则设置为默认的取数规则。
解决办法:
1. 自定义一个取数规则的类:SubNumberFormat.java。
它的作用是对显示格式,如#.00,000#.##0等按照四舍五入的规则进行取数。写好该程序之后,将其编译成class文件,放到:
C:\Program Files\reportHome\webapps\demo\WEB-INF\classes
C:\Program Files\reportHome\designer\web\WEB-INF\classes
如有包名,需自行新建目录)
不过目前研发已经将该功能类写好,并打包成numFormat.jar。无需用户自己定义了。将这个包拷贝到web-inf/lib下即可。
2. 在reportConfig.xml中增加如下配置:
<config>
<name>numberFormatClass</name>
<value>runqianReport.excel.SubNumberFormat</value>
</config>
若想用自己的包numFormat.jar,那么红色部分的值不可更改。
3. 更新report4.jar,并在设计中做如下配置:
点击配置>选项:
至此,报表的取数规则就变成四舍五入了。
说明:若想实现一舍二入,四舍三入等“非主流”的取数规则,那么请自行定义取数规则的类文件,按照上述步骤也是可以实现的。