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


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

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

帅哥哟,离线,有人找我吗?
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


 回到顶部
帅哥哟,离线,有人找我吗?
guosheng
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

 回到顶部