打印模板中如何对数值做“四舍五入”的处理
在“迅联食材配送系统”的打印模板中,如果使用round函数修约小数,并非是按我们熟悉的“四舍五入”的处理方式,
而用了国际通用的“四舍六入五成双”的方式处理。
如果要使用“四舍五入”,要按以下的公式处理:
Round(Floor(ToDecimal([单价]*Power(10,2)+0.5))/Power(10,2),2);
蓝色:表示处理的字段,如为数量字段,则将[单价]更改为[数量],如为金额字段,则将[单价]更改为[金额],以此类推...
红色:调整小数位数,调整红色数字,2表示保留2位小数,1表示保留位1小数,0表示保留0位小数,以此类推...
-----------------------------------------------------------------------------------------------------------------------
以下为2023年.01月之前的处理方法,比较繁琐不推荐。建议使用上面的通用公式处理。
假设要处理的数值为[单价],按“四舍五入”来保留2位小数,则公式可以这样写:
round(floor([单价]*100+0.5)/100,2)
如果处理其它数值,只要替换里面的“[单价]"内容就可以了,
如:处理[数量]公式就这样写
round(floor([数量]*100+0.5)/100,2)
处理[金额]的公式:
round(floor([金额]*100+0.5)/100,2)
按“四舍五入”来保留1位小数,就把里面的100替换为10,2替换为1,上面3个公式分别为:
round(floor([单价]*10+0.5)/10,1)
round(floor([数量]*10+0.5)/10,1)
round(floor([金额]*10+0.5)/10,1)
按“四舍五入”来保留0位小数,就把里面的10替换为1,1替换为0,上面3个公式分别为:
round(floor([单价]*1+0.5)/1,0)
round(floor([数量]*1+0.5)/1,0)
round(floor([金额]*1+0.5)/1,0)
上述公式中的1去掉,保留0位小数可以更简化为如下:
round(floor([单价]+0.5),0)
round(floor([数量]+0.5),0)
round(floor([金额]+0.5),0)
顺便说一下,floor函数,作用就是向下取整,也就是把小数部分抹去。例如floor(7.03)=7,floor(0.12)=0,floor(7.99)=7
明白了这个函数的作用,就容易理解上面的”四舍五入“公式的原理了。
当然,即使你不理解也没关系,直接复制上面的公式,把里面的内容替换一下就可以了。