delphi 四舍五入Round函数【百帖整理】
来源:互联网 发布:歌曲剪辑软件 编辑:程序博客网 时间:2024/04/29 06:00
在最近版本的Delphi Pascal 编译器中,Round 函数是以 CPU 的 FPU (浮点部件) 处理器为基础的。这种处理器采用了所谓的 "银行家舍入法",即对中间值 (如 5.5、6.5) 实施Round函数时,处理器根据小数点前数字的奇、偶性来确定舍入与否,如 5.5 Round 结果为 6,而 6.5 Round 结果也为6, 因为 6 是偶数。
对于XXX.5的情况,整数部分是奇数,那么会Round Up,偶数会Round Down,例如:
x:= Round(17.5) = x = 18
x:= Round(12.5) = x = 12
一、四舍五入法
四舍五入是一种应用非常广泛的近似计算方法,其有算术舍入法和银行家舍入法两种。
所谓算术舍入法,就是我们通常意义上的四舍五入法。其规则是:当舍去位的数值大于等于5时,在舍去该位的同时向前位进一;当舍去位的数值小于5时,则直接舍去该位。
所谓银行家舍入法,其实质是一种四舍六入五留双(又称四舍六入五奇偶)法。其规则是:当舍去位的数值小于5时,直接舍去该位;当舍去位的数值大于等于6 时,在舍去该位的同时向前位进一;当舍去位的数值等于5时,如果前位数值为奇,则在舍去该位的同时向前位进一,如果前位数值为偶,则直接舍去该位。
综上所述,两种舍入法所得结果不尽一致,因此在使用时必须根据实际需要加以区别。否则会出现一些莫明其妙的偏差。
二、Delphi中的四舍五入函数
众所周知,Delphi中有一个四舍五入取整函数Round。但它是按银行家舍入法的规则实施舍入操作的,Delphi中没有按算术舍入法规则实施舍入操 作的四舍五入取整函数。为此,本人编写了一个基于算术舍入法的四舍五入取整函数RoundEx作为对Delphi的补充。具体实现如下:
function RoundClassic(R: Real): Int64; begin Result:= Trunc(R); if Frac(R) >= 0.5 then Result:= Result + 1; end;
-------------------------
世界上的许多国家已广泛采用“四舍六入法”。我国国家科委于1955年就作了推荐。“四舍 六入法”可以概括为:“四舍六入五考虑,五后非零就进一,五后皆零看奇偶,五前为偶应舍 去,五前为奇要进一。”
好像短一点的口诀叫“四舍、六入、五凑偶”
据说欧洲银行全采用这个模式
这个都不知道,四舍六入五成双,Round都是这样处理的
http://www.cnblogs.com/del88/p/3788471.html
- delphi 四舍五入Round函数【百帖整理】
- Math.Round 四舍五入函数
- PHP 四舍五入函数 round()
- mysql 四舍五入round函数
- Oracle round 函数(四舍五入)
- Delphi的四舍五入函数
- Delphi中的四舍五入函数
- Delphi的四舍五入函数
- Delphi的四舍五入函数
- DELPHI四舍五入函数
- Delphi的四舍五入函数
- Delphi的四舍五入函数
- Delphi中的四舍五入函数
- Delphi的四舍五入函数
- SQL的四舍五入ROUND函数
- 用round 函数 实现 四舍五入
- 用round 函数 实现 四舍五入
- oracle round、trunc 四舍五入函数
- Java学习笔记 —— 11
- FragmentTabHost切换Fragment时避免重复加载UI(ViewPager切换Fragment时也适用)
- 利用两个栈模拟队列
- 笔试题
- 算法总结之求解模线性方程组
- delphi 四舍五入Round函数【百帖整理】
- 网页开发的5种在线调试环境-亲身体验
- TCP-UDP Socket
- Datatable 增加一列并为该列赋上相应的值
- 【边做项目边学Android】知识点:动态设置布局LayoutInflater
- 《程序员》12月刊约稿:技术走向管理要实现的转变
- 沙发
- 【算法学习】二分图最大匹配之初始:匈牙利算法
- 1075: 两数组最短距离