以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]在窗口SQLTable中列与列计算出现误差  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=168914)

--  作者:沪上游客
--  发布时间:2021/5/26 21:37:00
--  [求助]在窗口SQLTable中列与列计算出现误差
老师您好!
我的主表中数值列类型都是高精度小数,其中"企业所得税预缴率"和"总公司管理费费率"列属性设置小数点四位,固定小数位数设置为True ,按百分比格式显示设置为True
DataColChanged事件中代码:
        e.DataRow("企业所得税预缴数") = e.DataRow("本次开票金额") * e.DataRow("企业所得税预缴率")
        e.DataRow("总公司管理费交费数") = e.DataRow("本次开票金额") * e.DataRow("总公司管理费费率")
以上所有计算能正常四舍五入,都正确。

但是在窗口SQLTable表  DataColChanged中事件中设置同样代码,会经常出误差(差1分)
在窗口AfterLoad事件中设置代码:
Tables("单项合同各项数据查询_开票登记").DataTable.DataCols("本次开票金额").SetFormat("#,##0.00")
Tables("单项合同各项数据查询_开票登记").DataTable.DataCols("企业所得税预缴数").SetFormat("#,##0.00")
Tables("单项合同各项数据查询_开票登记").DataTable.DataCols("总公司管理费交费数").SetFormat("#,##0.00")
Tables("单项合同各项数据查询_开票登记").DataTable.DataCols("企业所得税预缴率").SetFormat("#,##0.00%")
Tables("单项合同各项数据查询_开票登记").DataTable.DataCols("总公司管理费费率").SetFormat("#,##0.00%")

窗口SQLTable  DataColChanged中事件中设置以下代码(主表相同)
        e.DataRow("企业所得税预缴数") = e.DataRow("本次开票金额") * e.DataRow("企业所得税预缴率")
        e.DataRow("总公司管理费交费数") = e.DataRow("本次开票金额") * e.DataRow("总公司管理费费率")

请老师指教,谢谢!

后台正确

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20210526213430.png
图片点击可在新窗口打开查看


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20210526213349.png
图片点击可在新窗口打开查看


[此贴子已经被作者于2021/5/26 21:41:29编辑过]

--  作者:有点蓝
--  发布时间:2021/5/27 14:12:00
--  
可能是精度问题,四舍五入了。不过可能没有您那种数据,我随便录入的数据暂时测试不出来。做个例子发过来看看,或者查一分钱的是什么数据计算,发上来试试

把数据类型从numeric(28, 2)改回numeric(28, 4)试试