Foxtable(狐表)用户栏目专家坐堂 → 关于用代码计算数值精度问题


  共有2068人关注过本帖树形打印复制链接

主题:关于用代码计算数值精度问题

帅哥哟,离线,有人找我吗?
南山南
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:64 积分:644 威望:0 精华:0 注册:2019/4/22 15:47:00
关于用代码计算数值精度问题  发帖心情 Post By:2019/12/15 17:48:00 [只看该作者]

例如:5173.41 / 6
用计算机计算出的值:862.235
用代码计算出的值:862.16667(精度偏低,假如计算几百万,上千万,这误差不就太大了)
代码如下:
If e.DataCol.Name = "公司" Then
    If e.NewValue Is Nothing Then
     e.DataRow("费用")=Nothing
     Else
    If e.DataRow.Isnull("费用") Then
            Dim Filter As String
            Dim ct,sm As Integer
            Filter = "日期 = #" & e.DataRow("日期") & "# And 编码 = '" & e.DataRow("编码") & "'"
            sm = DataTables("广告费").Compute("sum([消费])",Filter)
            ct = DataTables("分摊").Compute("Count([编码])", Filter )
            e.DataRow("费用")=sm/ct
      End If
     End If
End If
请老师解惑

 回到顶部
帅哥哟,离线,有人找我吗?
y2287958
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:4627 积分:33767 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2019/12/15 19:17:00 [只看该作者]

试试高精度

 回到顶部
帅哥,在线噢!
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105467 积分:536320 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/12/15 20:33:00 [只看该作者]

Dim ct,sm As Decimal

另外把费用列改为高精度列

 回到顶部