Foxtable(狐表)用户栏目专家坐堂 → [求助]数据计算问题代码


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

主题:[求助]数据计算问题代码

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


加好友 发短信
等级:五尾狐 帖子:1142 积分:8900 威望:0 精华:0 注册:2012/7/10 9:09:00
[求助]数据计算问题代码  发帖心情 Post By:2014/5/6 17:16:00 [显示全部帖子]

请各位老大看看,哪有毛病了,目的是在表“笔试成绩”中的列有:笔试成绩、加权系数、本场面试成绩、面试成绩、总成绩,之间的关系是:如果有加权系数的,面试成绩=加权系数*本场面试成绩;如果没有加权系数的,面试成绩=本场面试成绩;总成绩=笔试成绩*0.5+面试成绩*0.5,下述代码不知道出错在哪,只计算有加权系数的,不计算没有加权系数的,谢谢
If e.DataRow("加权系数") IsNot Nothing Then
    e.DataRow("面试成绩") = Round2(e.DataRow("加权系数")*e.DataRow("本场面试成绩"),2)
Else
    e.DataRow("面试成绩") = e.DataRow("本场面试成绩")
    e.DataRow("总成绩") = Round2(e.DataRow("笔试成绩")*0.5 + e.DataRow("面试成绩")*0.5,2)
End If


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


加好友 发短信
等级:五尾狐 帖子:1142 积分:8900 威望:0 精华:0 注册:2012/7/10 9:09:00
  发帖心情 Post By:2014/5/6 17:29:00 [显示全部帖子]

上例子:请指导。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:面试登分系统_201405061给bin.zip



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


加好友 发短信
等级:五尾狐 帖子:1142 积分:8900 威望:0 精华:0 注册:2012/7/10 9:09:00
  发帖心情 Post By:2014/5/7 7:57:00 [显示全部帖子]

甜总,按上述代码,没有加权系数的,能计算出总成绩,有加权系数的,计算不出总成绩,怎么回事

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


加好友 发短信
等级:五尾狐 帖子:1142 积分:8900 威望:0 精华:0 注册:2012/7/10 9:09:00
  发帖心情 Post By:2014/5/7 8:39:00 [显示全部帖子]

老狐爸在不,round2,不能严格的四舍不入,还需加上+0.0000001,是真的吗

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


加好友 发短信
等级:五尾狐 帖子:1142 积分:8900 威望:0 精华:0 注册:2012/7/10 9:09:00
  发帖心情 Post By:2014/5/7 9:34:00 [显示全部帖子]

如下例:Output.Show(Round2(56.35 * 0.5 + 81.22*0.5,2)),计算出的数为:68.785,保留两位小数应为68.79,但在命令窗口中执行为68.78,这是怎么回事?

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


加好友 发短信
等级:五尾狐 帖子:1142 积分:8900 威望:0 精华:0 注册:2012/7/10 9:09:00
  发帖心情 Post By:2014/5/7 10:46:00 [显示全部帖子]

有没有解决办法,还是round2函数设置有问题呢,老大们?

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


加好友 发短信
等级:五尾狐 帖子:1142 积分:8900 威望:0 精华:0 注册:2012/7/10 9:09:00
  发帖心情 Post By:2014/5/7 11:06:00 [显示全部帖子]

foxtable四舍五入试验情况

     foxtable中的四舍五入函数round、round2,实际运用起来真的不好用,这两个函数都不能很好的完成对小数的四舍五入的功能!原因是采用的四舍六入五留双的这样原则,比如说:round(3.45,1)=3.4 ,round2(3.45,1)=3.5,但如果round2的计算为表达式,就不能四舍五入了。如:Output.Show(Round2(56.35 * 0.5 + 81.22*0.5,2)),计算出的数为:68.785,保留两位小数应为68.79,但在命令窗口中执行为68.78。                                                                                    

     既然这些函数都不能很好的处理好小数,可是我们需要计算一些小数的四舍五入怎么办呢?
         
经过反复试验,我发现了一个很强大的格式输入函数format(),用format()函数来四舍五入,尤其是对有计算表达式进行数据计算时,很管用。
    
反正到现在我没有发现用format()函数计算四舍五入有什么误差!
    
或许有一天你们会发现,如果发现了的话就告诉我吧!
   
格式:format(计算表达式,"0.00"),"0.00"表示保留两位小数,依此类推。

例子:e.DataRow("总成绩") = Format(e.DataRow("笔试成绩") * 0.5 + e.DataRow("面试成绩") * 0.5,"0.00")

[此贴子已经被作者于2014-5-7 11:09:56编辑过]

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


加好友 发短信
等级:五尾狐 帖子:1142 积分:8900 威望:0 精华:0 注册:2012/7/10 9:09:00
  发帖心情 Post By:2014/5/7 11:08:00 [显示全部帖子]

请各位老师试验,如果可行,就给个赞,谢谢

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


加好友 发短信
等级:五尾狐 帖子:1142 积分:8900 威望:0 精华:0 注册:2012/7/10 9:09:00
  发帖心情 Post By:2014/5/7 11:17:00 [显示全部帖子]

也是逼的没办法,我需要四舍五入的精确数据,这也涉及到考生能不能入围,就因为一个0.01的误差,把考生给刷下来,于心不忍,谢谢

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


加好友 发短信
等级:五尾狐 帖子:1142 积分:8900 威望:0 精华:0 注册:2012/7/10 9:09:00
  发帖心情 Post By:2014/5/7 11:20:00 [显示全部帖子]

那么format,用它计算会不会有误差?如果没有误差,用它方便,

 回到顶部
总数 14 1 2 下一页