以文本方式查看主题

-  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
--  
精度不够计算肯定有误差。对精度要求高的,可以改为高精度列