报表四舍五入功能

需求背景:

报表在对数值型数据进行显示格式设置或者通过函数保留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,并在设计中做如下配置:

点击配置>选项:

 

至此,报表的取数规则就变成四舍五入了。

 

说明:若想实现一舍二入,四舍三入等“非主流”的取数规则,那么请自行定义取数规则的类文件,按照上述步骤也是可以实现的。