首页 > 编程 > Delphi > 正文

Delphi中的四舍五入问题

2019-11-18 18:25:59
字体:
来源:转载
供稿:网友
     在Delphi中使用Round函数得到的答案有时与我们所预期的会不太一样:
采用的是四舍六入五留双。即当舍或入位大于或小于五时按四舍五入来处理,而当舍或入位等于五时,就要看前面一位是什么,根据奇进偶不进,它总是返回一个偶数值。
     示例             结果
i:= Round(11.5)        12
i:= Round(10.5)        10

       这种Round其实是按照银行家算法,统计学上一般都用这种算法,比传统的"四舍五入"要科学。
如果要使用传统的"四舍五入"方法,可以使用下面函数:

function RoundClassic(R: Real): Int64;
begin
  Result:= Trunc(R);
  if Frac(R) >= 0.5 then
    Result:= Result + 1;
end;

       其实在VB、Excel、.net相关的语言中都有这个问题。


上一篇:在Delphi.net中调用COM/COM+

下一篇:在Delphi中实现StringTokenizer功能模块

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
学习交流
热门图片

新闻热点

疑难解答

图片精选

网友关注