报表内计算数据偏差问题

 

在做表的过程中,经常会遇到合并计算等需求
特别是对于某些银行,仓储,物流,零售业等。
某些表的数据需要保留一定的格式,比如保留两位小数。
由于保留小数是四舍五入的,单个数据的四舍五入,对实际的结果不是很明显,但是当数据大量的时候,这个偏差就会比较大了。

比如,下面这张表。

imagepng
只是张普通的展现表。

单价和计算结果是要求保留两位小数的。

imagepng

结果看上去就会非常怪异,比如番茄酱,单价四舍五入后是 13.00 订购量是整数,但是计算结果却是 948.64,带有两位小数。
这样的结果看上去是很不舒服的。

对于这样的情况,就是由于四舍五入引起的偏差,因为计算数据是针对于真实值进行计算的,而非显示值、
所以要保证结果的一致性,就需要对显示值进行计算。需要调整单元格的表达式。
常用的方法就是 round 函数,直接用表达式执行四舍五入

    函数说明:
        对数据在指定位置上进行截取,剩余部分四舍五入
        相关的函数有:
            ceil:对数据在指定位置上进行截取,剩余部分只要有值就进位
            floor:对数据在指定位置上进行截取,剩余部分只要有值全舍去
    语法:
        round(numberExp, {nExp})
    参数说明:
        numberExp       需要进行截取的数据
        nExp            整数,用于指定需要进行截取的位置,
                        >0:从小数点往右位移nExp个位数,
                        <0:从小数点往左移nExp个位数
                        =0:表示当前小数点的位置
    返回值:
        数值型
    示例:
        例1:round(3451251.274,0)     返回:3451251.0
        例2:round(3451251.274,-1)    返回:3451250.0
        例3:round(3451251.274,-2)    返回:3451300.0
        例4:round(3451251.274,1)     返回:3451251.3
        例5:round(3451251.274,2)     返回:3451251.27

此例中,需要对单价进行调整,表达式改为:

=round(ds1.单价,2)

修改完后,再次预览,数据即满足需求。

imagepng