Foxtable(狐表)用户栏目专家坐堂 → 四舍五入 表达式列计算结果不准确,经常出错


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

主题:四舍五入 表达式列计算结果不准确,经常出错

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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/7/15 14:04:00 [显示全部帖子]

Convert(0.005 *100 + 0.00000001, 'System.Int64') / 100

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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/7/15 14:52:00 [显示全部帖子]

在列属性中,将小数位数设置为2位

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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/7/15 15:12:00 [显示全部帖子]

那就再转换一次啊:

 

 

Convert(IIF([层高]>6,Convert((Parent(单价明细).单价*(1.5+([层高]-6)/0.3*[超高系数]))*100, 'System.Decimal') / 100,Convert((Parent(单价明细).单价*(([层高]-3) / 0.3*0.05+1))*100, 'System.Decimal') / 100) * 100 + 0.000000001,'System.Int64') / 100


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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/7/15 15:19:00 [显示全部帖子]

用表达式的话,这样也可以:

 

Convert((Convert(IIF([层高] > 6,Parent(单价明细).单价 * (1.5 +([层高] - 6) / 0.3 * [超高系数]), Parent(单价明细).单价 *(([层高]-3) / 0.3*0.05+1)),'System.Decimal')+0.00000001) * 100,'System.Int64') / 100


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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/7/15 17:03:00 [显示全部帖子]

一开始就是列类型的精度不够造成的。

注意两个表中的相关数据列的数据类型,都改为双精度小数。

 

另外:

 

不要提个问题,就不停地问催,不止你一个人提问,而且解决问题也需要时间的,注意一点基本的礼貌。

[此贴子已经被作者于2013-7-15 17:04:06编辑过]

 回到顶部