二开案例.python脚本.最佳实践之小数处理

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:1

二开案例.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,而导致的精度...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息