以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- FOX中的四舍五入ROUND()函数也太不好用了吧? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=260) |
-- 作者:cpayinyuan -- 发布时间:2008/9/5 12:56:00 -- FOX中的四舍五入ROUND()函数也太不好用了吧? 在表达式中,没有四舍五入函数也就算了,贺老师说不太好加,就麻烦点用代码来实现吧!但我看到后面,在代码部分的 Round()函数竟然也不是四舍五入,好像是什么四舍六入五成双!可能我对编程了解有限,不太明白这样的四舍六入五成双函数有什么特殊的重大用途,但我只知道,在管理软件中或者日常计算中,无论在哪个编程工具或者电子表格软件中,四舍五入函数都是最常用也是最简单的函数之一,但不知道在FOX这样优秀、使用简便、功能强大的好软件中,竟然没有一个直接实现四舍五入的函数,还要编一个复杂的转换公式或者通过代码才能实现,这太让人不可理解了吧! 贺老师千万不要说开发FOX的开发工具中也没有四舍五入函数,不管是不是事实,我认为,FOX本身也是功能很强的开发工具,不管用什么开发的,都应想办法自定义一个这样的函数,我想这应该是没有技术难度的,所以不太明白为什么没有这样做! [此贴子已经被作者于2008-9-5 13:55:25编辑过]
|
-- 作者:菜鸟冬瓜 -- 发布时间:2008/9/5 12:57:00 -- 我也要用到四舍五入 希望不是真的 |
-- 作者:smileboy -- 发布时间:2008/9/5 12:59:00 -- 如何实现四舍五入 表达式并没有提供传统的四舍五入函数Round,我们只能用Convert函数来间接实现。 例如金额列原来的计算公式为: [数量] * [单价] * (1 - [折扣]) 为了保留两位小数,可以将公式改为: Convert([数量] * [单价] * (1 - [折扣]) * 100, \'System.Int64\') / 100 原理很简单:将计算结果乘以100,然后取整,最后除以100。 如果你要保留三位小数,将表达式中的100改为1000即可,其余类推。 |
-- 作者:lxl -- 发布时间:2008/9/5 13:08:00 -- 呵呵,Math 类的 Round函数是.NET里面的。 |
-- 作者: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,舍入后的结果更能反映实际结果 |
-- 作者:eric803 -- 发布时间:2008/9/5 13:41:00 -- 第一次听说, 孤陋寡闻啊. 受教了! 呵呵 |
-- 作者:还不错 -- 发布时间:2008/9/5 13:43:00 -- 让狐狸的爸爸再生产一个“四舍五入”函数吧。 |
-- 作者:cpayinyuan -- 发布时间: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 -- 发布时间: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编辑过]
|
-- 作者:擎天柱 -- 发布时间:2008/9/5 13:59:00 -- 四舍六入五成双在统计学中是必需的,相对易表有了改进。不过四舍五入也是大众化的。“两全”则“齐美”了。 |