Foxtable(狐表)用户栏目专家坐堂 → 请教,表达式四舍五入的问题?


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

主题:请教,表达式四舍五入的问题?

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


加好友 发短信
等级:小狐 帖子:363 积分:3831 威望:0 精华:0 注册:2012/4/16 20:20:00
请教,表达式四舍五入的问题?  发帖心情 Post By:2014/1/10 20:14:00 [只看该作者]

如:Convert(698236.5,'System.Int64') = 698236,而不是698237?
这很奇怪,请教要如何设置?
谢谢!!

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/1/10 20:20:00 [只看该作者]

  可以这样写

Convert(698236.5 + 0.1 ,'System.Int64')
[此贴子已经被作者于2014-1-10 21:02:41编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/1/10 20:21:00 [只看该作者]


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


加好友 发短信
等级:小狐 帖子:363 积分:3831 威望:0 精华:0 注册:2012/4/16 20:20:00
  发帖心情 Post By:2014/1/10 20:29:00 [只看该作者]

可是:
Convert(698236.6,'System.Int64') 又可以等于698237。
不知道怎么回事,头大了!

再测试下,Convert(698015.5,'System.Int64') 却又 = 698016

上面的帮助说明,是指取两位小数点的四舍五入,不知道直接取整数如何四舍五入?
谢甜老师帮我!
[此贴子已经被作者于2014-1-10 20:33:15编辑过]

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


加好友 发短信
等级:四尾狐 帖子:953 积分:7252 威望:0 精华:0 注册:2011/9/6 13:36:00
  发帖心情 Post By:2014/1/10 20:53:00 [只看该作者]

这是四舍六入五留双

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/1/10 21:03:00 [只看该作者]

 好像不行的样子!
[此贴子已经被作者于2014-1-10 21:04:24编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/1/10 21:14:00 [只看该作者]

 试了一下,可以用表达式做,根据5楼的规则,但要写很长一段表达式。建议直接用代码实现表达式的内容。


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


加好友 发短信
等级:小狐 帖子:363 积分:3831 威望:0 精华:0 注册:2012/4/16 20:20:00
  发帖心情 Post By:2014/1/10 21:54:00 [只看该作者]

哎,好多的数值计算都应用了表达式,就是想用表达式的优势,这下都要改了!
我自己在琢磨看看。
谢甜老师,让您费心了!

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


加好友 发短信
等级:小狐 帖子:363 积分:3831 威望:0 精华:0 注册:2012/4/16 20:20:00
  发帖心情 Post By:2014/1/10 23:01:00 [只看该作者]

终于找到答案了,把相关的计算列数据类型改为双精度小数,然后:
Convert(["xx] * ["xx"} + 0.000001,'System.Int64') 
就可以了

下面的内容是狐爸 2011年回帖的内容:

四舍六入五成双是一种精确度的计数保留法.这里"四"是小于五的意思,"六"是大于五的意思,"五"是舍入位之后的尾数逢五的话看前一位,奇进偶不进。如1.25保留一位小数,因为2是偶数,所以是1.2。又如1.35,因为3是奇数,所以是1.4。 
从统计学的角度,"四舍六入五成双"比"四舍五入"要科学,它使舍入后的结果有的变大,有的变小,更平均.而不是像四舍五入那样逢五就入,导致结果偏向大数. 
例如:1.15+1.25+1.35+1.45=5.2,若按四舍五入取一位小数计算 
1.2+1.3+1.4+1.5=5.4 
按"四舍六入五成双"计算,1.2+1.2+1.4+1.4=5.2,舍入后的结果更能反映实际结果。

如果这些东西能写进帮助,不是更好?


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


加好友 发短信
等级:五尾狐 帖子:1049 积分:8150 威望:0 精华:0 注册:2011/10/11 11:13:00
  发帖心情 Post By:2014/1/11 18:29:00 [只看该作者]

搞的这么复杂啊。

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