二开案例.python脚本.最佳实践之小数处理
【场景】二开案例.python脚本.最佳实践之小数处理
【结论】不要再脚本中直接定义小数,避免因python隐式转换导致的转换为float,而导致的精度丢失
【原因】python脚本语言,没有decimal类型,自动根据传入值的可能做隐式转换
【结论1】系统中的小数值,使用的是decimal处理; 直接定义小数,使用的是float 类型
<0>系统中的小数值
![image.webp](/download/0100bd3cf2bfb4884bdbb7e3fd336af6bc78.webp)
![image.webp](/download/01006c440aaee714476da2c2e7ff9be49c2b.webp)
<1>直接定义整数,使用的是int(脚本语言推导转型)
![image.webp](/download/010064ae7721bd1d4fdeb056bbaa75e67e64.webp)
<2>直接定义小数,使用的是float (脚本语言推导转型)
![image.webp](/download/0100abc0e8eb28034993a98276cff52332d4.webp)
【结论2】在进行算术运算时,在没有float参与的情况下,最终依然计算为deciaml,准确计算;
当有float参与计算时,计算精度丢失
<0>系统小数值直接计算,结果正常
![image.webp](/download/0100ae5620f5e35c4261a1a96f653ac4b95e.webp)
<1>使用定义整数参与计算,结果正常 (decimal + int = decimal)
![image.webp](/download/0100990f67625046457aae1d8c9cab4cd46c.webp)
<2>使用定义小数参与计算,计算精度丢失,结果异常 (decimal + float = float)
![image.webp](/download/0100f45cdbe64102406f99f04015206a52cf.webp)
![image.webp](/download/0100e26456c436f443fb86ccc9e93b88c28e.webp)
【变通方案】在表达式中传入定义小数时,使用以下脚本处理,转为decimal
使用任一一个系统的小数字段,将传入的定义小数作为文本传入
![image.webp](/download/010041d13b3746f545128cb26289f7679c1a.webp)
![image.webp](/download/010029642dd4450f440196394b82f26834c9.webp)
![image.webp](/download/0100594f3e8a9cfb413b80aad266cd8697ae.webp)
【后续方案】平台增加自定义函数,将定义小数强制使用decimal处理
二开案例.python脚本.最佳实践之小数处理
【场景】二开案例.python脚本.最佳实践之小数处理【结论】不要再脚本中直接定义小数,避免因python隐式转换导致的转换为float,而导致的精度...
点击下载文档
本文2024-09-23 04:17:29发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-164358.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章