Python小数取整 向下取整、四舍五入、向上取整【分享】
金蝶云社区-云社区用户4u731234
云社区用户4u731234
19人赞赏了该文章 1万次浏览 未经作者许可,禁止转载编辑于2017年04月06日 13:04:21
summary-icon摘要由AI智能服务提供

本文介绍了如何通过配置实体服务规则来实现对小数类型字段的向下取整、四舍五入、向上取整功能。展示了界面测试效果,并详细说明了具体设置过程,包括添加字段和配置服务规则的前提条件。针对向上取整,采用四舍五入加变通方法实现,因Python的math.ceil函数无法直接在此环境中使用。

本帖子想要达到的效果:
会配置实体服务规则(能用实体服务规则实现的,尽量选用实体服务规则实现),
设置实体服务规则的字段必然触发条件,
小数类型的 可以实现向下取整、四舍五入、向上取整 功能。

先看界面测试效果:
小数1.0 向下取整1.0、四舍五入1.0、向上取整1.0

小数1.1 向下取整1.0、四舍五入1.0、向上取整2.0


小数1.5 向下取整1.0、四舍五入2.0、向上取整2.0


小数1.99 向下取整1.0、四舍五入2.0、向上取整2.0

具体设置:
添加4个小数字段,分别为 “小数”“小数_向下取整“、“小数_四舍五入“、“小数_向上取整“。
单据头添加实体服务规则:


实体服务规则,小数字段改变,触发相应的3个字段取数
如果是值更新方式实现,需要配置小数字段的3个值更新服务,
并且如果涉及到多个字段每个字段都需要配置值更新,
配置实体服务规则,清晰明了),

前提条件:小数字段改变条件 小数=小数 字段必然触发条件
这里经常有人会问到设置成 1=1,这样设置是不会进行执行的,
因为实体服务规则的是否需要执行,是需要先判断某个字段值改变了,相应的字段标识是否设置在了实体服务规则的前提条件中,
如在里面,才会进行解析判断前提条件,显然 设置1=1 是不包含任何字段的标识,也就相当于一条无用的实体服务规则配置。

具体的三个计算公式的设置:
F_PAIK_Decimal1 = int ( F_PAIK_Decimal )
即 小数_向下取整 = int ( 小数 ) int 向下取整


F_PAIK_Decimal2 = round ( F_PAIK_Decimal )
即 小数_四舍五入 = round ( 小数 ) round 四舍五入


F_PAIK_Decimal3 = int ( round ( F_PAIK_Decimal + 0.49 ) )
即 小数_向上取整 = int ( round ( 小数 + 0.49 ) )
这里要注意下:Python是支持 math.ceil(小数值) 但我们这里是直接用不了的,
因为需要导入 import math 模块的,我们这里就不能进行使用。
因此我们就变通下,因为 向下取整和四舍五入是可以直接使用的,
通过四舍五入与向下取整做的一个变通,实现向上取整

完 谢谢。