Python小数取整 向下取整、四舍五入、向上取整【分享】
金蝶云社区-Chief
Chief
31人赞赏了该文章 7,149次浏览 未经作者许可,禁止转载编辑于2018年08月29日 08:39:56
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 模块的,我们这里就不能进行使用。
因此我们就变通下,因为 向下取整和四舍五入是可以直接使用的,
通过四舍五入与向下取整做的一个变通,实现向上取整。


完 谢谢。

图标赞 31
31人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!