Foxtable(狐表)用户栏目专家坐堂 → 关于数值类型的精确对比的问题


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

主题:关于数值类型的精确对比的问题

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


加好友 发短信
等级:四尾狐 帖子:896 积分:7535 威望:0 精华:0 注册:2017/12/27 14:19:00
关于数值类型的精确对比的问题  发帖心情 Post By:2020/11/17 15:52:00 [只看该作者]


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

阴影部分的值分别为:5891.48    -   5000      - 891.48  弹窗三者的差是个科学计数的小数,造成判断不成立,该怎么处理啊?
表的datacolchanged事件:
If round2(e.DataRow("支单金额"),2)-round2(e.DataRow("累计支付"),2)-round2(e.DataTable.compute("sum(本次金额)","资金支付明细ID='"& e.DataRow("资金支付明细ID") &"'"),2)<0
        messagebox.show("多次付款的金额不能超过支单金额.")
        e.DataRow("本次金额")=Nothing
End If


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


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/11/17 15:54:00 [只看该作者]

把这3个列都改为高精度类型的列,然后直接减判断即可,不需要round2

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


加好友 发短信
等级:四尾狐 帖子:896 积分:7535 威望:0 精华:0 注册:2017/12/27 14:19:00
  发帖心情 Post By:2020/11/17 16:00:00 [只看该作者]

之前这些列存了好多 double类型的数据
1、改成高精度小数,对现有数据有影响吗
2、要求存的数据是小数点后两位,即使改了数据类型,还是要round2吧


另外,我把round2放到最外边,可以了。round2是真正的四舍五入,保留2位小数的话,做四舍五入的顺序应该没影响吧。怎么会出现这种问题啊?
round2(e.DataRow("支单金额")-e.DataRow("累计支付")-e.DataTable.compute("sum(本次金额)","资金支付明细ID='"& e.DataRow("资金支付明细ID") &"'"),2)<0

[此贴子已经被作者于2020/11/17 16:06:03编辑过]

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


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/11/17 16:50:00 [只看该作者]

1、没有任何影响
2、完全不需要round2


 回到顶部