以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]一个流水账的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=79112)

--  作者:zlf2000168
--  发布时间:2015/12/24 14:59:00
--  [求助]一个流水账的问题

图片点击可在新窗口打开查看此主题相关图片如下:b9yr1gonv{y1b8l~o6j2_x.png
图片点击可在新窗口打开查看


记流水账,我将DataColChanged事件设为:

Select Case e.DataCol.Name
    Case
"收入","支出"
        For Each dr As DataRow In e.DataTable.Select("[_SortKey] >= " & e.DataRow("_SortKey"))
            Dim
Val1 As Double = e.DataTable.Compute("Sum(收入)","[_SortKey] <= " & dr("_SortKey"))
            Dim
Val2 As Double = e.DataTable.Compute("Sum(支出)","[_SortKey] <= " & dr("_SortKey"))
            dr("余额") = Val1 - Val2

        Next
End
Select


可是上面在支出6608.3的时候余额就不对了,其他都是正确的,请问老师这个怎么破?



--  作者:大红袍
--  发布时间:2015/12/24 15:05:00
--  

你的收入列、支出列、余额列,都用改成高精度小数吧。


--  作者:zlf2000168
--  发布时间:2015/12/24 15:09:00
--  
谢谢老师,果然可以。但这是为什么呢?


--  作者:大红袍
--  发布时间:2015/12/24 15:10:00
--  
应该是sum合计数据的时候,精度有可能丢失。因为计算机小数都是有精度问题的。
--  作者:zlf2000168
--  发布时间:2015/12/24 15:12:00
--  
哦,谢谢老师