Python小数取整 向下取整、四舍五入、向上取整【分享】
金蝶云社区-Chief
Chief
29人赞赏了该文章 6392次浏览 未经作者许可,禁止转载编辑于2018年08月29日 08:39:56

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

先看界面测试效果:
小数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 模块的,我们这里就不能进行使用。
因此我们就变通下,因为 向下取整和四舍五入是可以直接使用的,
通过四舍五入与向下取整做的一个变通,实现向上取整。


完 谢谢。

赞 29