Foxtable(狐表)用户栏目专家坐堂 → FOX中的四舍五入ROUND()函数也太不好用了吧?


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

主题:FOX中的四舍五入ROUND()函数也太不好用了吧?

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


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
FOX中的四舍五入ROUND()函数也太不好用了吧?  发帖心情 Post By:2008/9/5 12:56:00 [只看该作者]

贴子已被锁定

    在表达式中,没有四舍五入函数也就算了,贺老师说不太好加,就麻烦点用代码来实现吧!但我看到后面,在代码部分的 Round()函数竟然也不是四舍五入,好像是什么四舍六入五成双!可能我对编程了解有限,不太明白这样的四舍六入五成双函数有什么特殊的重大用途,但我只知道,在管理软件中或者日常计算中,无论在哪个编程工具或者电子表格软件中,四舍五入函数都是最常用也是最简单的函数之一,但不知道在FOX这样优秀、使用简便、功能强大的好软件中,竟然没有一个直接实现四舍五入的函数,还要编一个复杂的转换公式或者通过代码才能实现,这太让人不可理解了吧!
   贺老师千万不要说开发FOX的开发工具中也没有四舍五入函数,不管是不是事实,我认为,FOX本身也是功能很强的开发工具,不管用什么开发的,都应想办法自定义一个这样的函数,我想这应该是没有技术难度的,所以不太明白为什么没有这样做!
[此贴子已经被作者于2008-9-5 13:55:25编辑过]

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


加好友 发短信
等级:婴狐 帖子:24 积分:316 威望:0 精华:0 注册:2008/9/1 11:17:00
  发帖心情 Post By:2008/9/5 12:57:00 [只看该作者]

我也要用到四舍五入 希望不是真的

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


加好友 发短信 好心情 一级勋章
等级:超级版主 帖子:715 积分:5564 威望:0 精华:1 注册:2008/8/31 20:45:00
  发帖心情 Post By:2008/9/5 12:59:00 [只看该作者]

如何实现四舍五入

表达式并没有提供传统的四舍五入函数Round,我们只能用Convert函数来间接实现。

例如金额列原来的计算公式为:

[数量] * [单价] * (1 - [折扣])

为了保留两位小数,可以将公式改为:

Convert([数量] * [单价] * (1 - [折扣]) * 100, 'System.Int64') / 100

原理很简单:将计算结果乘以100,然后取整,最后除以100。

如果你要保留三位小数,将表达式中的100改为1000即可,其余类推。


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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:858 积分:6071 威望:0 精华:19 注册:2008/9/1 9:13:00
  发帖心情 Post By:2008/9/5 13:08:00 [只看该作者]

呵呵,Math 类的  Round函数是.NET里面的。

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


加好友 发短信
等级:超级版主 帖子:315 积分:3217 威望:0 精华:6 注册:2008/8/31 19:42:00
  发帖心情 Post By:2008/9/5 13:35:00 [只看该作者]


四舍六入五成双是一种精确度的计数保留法.舍入规律是"四舍六入五成双",这里"四"是小于五的意思,"六"是大于五的意思,"五"是舍入位之后的尾数逢五的话看前一位,奇进偶不进,就像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,舍入后的结果更能反映实际结果

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


加好友 发短信
等级:童狐 帖子:243 积分:2370 威望:0 精华:1 注册:2008/8/31 22:25:00
  发帖心情 Post By:2008/9/5 13:41:00 [只看该作者]

 第一次听说, 孤陋寡闻啊.
受教了! 呵呵

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


加好友 发短信
等级:幼狐 帖子:151 积分:1049 威望:0 精华:0 注册:2008/9/1 9:08:00
  发帖心情 Post By:2008/9/5 13:43:00 [只看该作者]

让狐狸的爸爸再生产一个“四舍五入”函数吧。

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


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2008/9/5 13:53:00 [只看该作者]

以下是引用smileboy在2008-9-5 12:59:00的发言:

如何实现四舍五入

表达式并没有提供传统的四舍五入函数Round,我们只能用Convert函数来间接实现。

例如金额列原来的计算公式为:

[数量] * [单价] * (1 - [折扣])

为了保留两位小数,可以将公式改为:

Convert([数量] * [单价] * (1 - [折扣]) * 100, 'System.Int64') / 100

原理很简单:将计算结果乘以100,然后取整,最后除以100。

如果你要保留三位小数,将表达式中的100改为1000即可,其余类推。

这个我肯定知道,我的意思是,在别的软件中很简单的事情,为什么非要把它变得那么复杂呢?不就是四舍五入吧,有那么复杂吗?做一个这样的函数应该是没有太大问题的呀!

[此贴子已经被作者于2008-9-5 13:56:09编辑过]

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


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2008/9/5 13:55:00 [只看该作者]

以下是引用ylm在2008-9-5 13:35:00的发言:

四舍六入五成双是一种精确度的计数保留法.舍入规律是"四舍六入五成双",这里"四"是小于五的意思,"六"是大于五的意思,"五"是舍入位之后的尾数逢五的话看前一位,奇进偶不进,就像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,舍入后的结果更能反映实际结果

我认为做为一个开发工具,尤其像FOX这样作为普通大众用的开发工具和数据库软件,不能只看是不是科学是不是符合统计学的原理,而应该以大家的实际需要为主要目的,强烈建议在表达式中和代码中都改进或增加四舍五入函数!
    希望不要因为一个小小的四舍五入函数给大家在使用中增加那么多麻烦!

[此贴子已经被作者于2008-9-5 13:57:17编辑过]

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


加好友 发短信
等级:二尾狐 帖子:542 积分:4243 威望:0 精华:4 注册:2008/9/1 8:27:00
  发帖心情 Post By:2008/9/5 13:59:00 [只看该作者]

四舍六入五成双在统计学中是必需的,相对易表有了改进。不过四舍五入也是大众化的。“两全”则“齐美”了。

 回到顶部
总数 38 1 2 3 4 下一页