注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

gb.qin

A Man's心靈的港灣

 
 
 

日志

 
 

Delphi中实现四舍五入(集)  

2009-11-17 11:06:52|  分类: Delphi |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

在delphi里面,其提供的是使用 round()来实现四舍五入,但是得到的结果往往不是我们想要的。
比如 round(11.5) ,可以得到12
但是 round(12.5) ,得到的也是12
为什么?这个要看小数点的前一位数,如果是奇数,则四舍五入结果正是我们想要的。如果是偶数,则不管小数点后面的是.6还是.9,都会舍去。其实这种Round是按照银行家的算法,统计学上一般都用这种算法,比传统的四舍五入要科学。只是我们日常生活没用摆了。

trunc是个数学函数。
比如trunc(-3.7)=-3;
trunc(-3.4)=-3
不要小数部分!

四舍五入可以用Trunc(i+0.5) 或者 Trunc(i+0.05) 根据精度需要

function GetRound(R: Double): Integer;
begin

 
if R < 0 then
    Result :
= Trunc(R - 0.5)
 
else

    Result :
= Trunc(R + 0.5);
end;

 

floor 和 ceil 是 math unit 里的函数,使用前要先 Uses Math。

trunc 和 round 是 system unit 里的函数,缺省就可以用。

floor 直接往小的取,比如 floor(-123.55)=-124,floor(123.55)=123

trunc 直接切下整数,比如 trunc(-123.55)=-123, floor(123.55)=123

ceil 直接往大的取,比如 ceil(-123.55)=-123, ceil(123.55)=124

round 计算四舍五入,比如 round(-123.55)=-124,round(123.55)=124


Delphi有没有将数字保留小数点后三位的函数

roundto(数字,-3)   
 还要在前面uses里加math

数字是指数字类型,-3是精确位,小数用-,正数用+

  评论这张
 
阅读(659)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017