以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 单精度小数 和 双精度小数 的表达式求和的差异 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=170629) |
-- 作者:guosheng -- 发布时间:2021/8/2 14:17:00 -- 单精度小数 和 双精度小数 的表达式求和的差异 什么原因啊? 含税金额 列 为单精度小数时,存在差异;如果改成双精度小数则不存在差异。 1、Convert(IIF([服务名称]=\'服务费\',[含税金额],null)* 100, \'System.Int64\') / 100 含税金额 = 112426.99时,通过表达式转换后,变成了112427;含税金额 =337280.97时,通过表达式转换后,变成了337281。 2、Convert(Sum(Child(结转_发票).服务费含税金额)* 100, \'System.Int64\') / 100,来求和的结果差异。 子表中,明细数据为:求和为 1573977.86;而利用上边的求和表达式,结果是1573977.92。 求和差了0.06. 100000 100000 24853.98 100000 100000 24853.98 100000 100000 24853.98 100000 12426.99 100000 100000 100000 37280.97 337281 112427 |
-- 作者:有点蓝 -- 发布时间:2021/8/2 14:22:00 -- 精度不够计算肯定有误差。对精度要求高的,可以改为高精度列 |