当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: Single, Double和Extended型的浮点变量存在着四舍五入问题。
 

 

 ·让硬盘休眠-parkdisk程序    »显示摘要«
    摘要: procedure parkdisk; var regs: registers; begin regs.al := $00; intr($13,regs); assert((regs.flags and fcarry) = 0, error getting disk parameters - al returns +inttostr (regs.al,0)); reg......
 ·实现高速文件拷贝    »显示摘要«
    摘要:program fastcopy; {$a+,b-,d-,e+,f+,g+,i-,l-,n+,p-,q-,r-,s-,t-,v-,x-,y-} {$m 16384,$10000} const maxbufcnt = 1000; type bufptr = ^bufrec; bufrec = array[0..8190] of byte; var infile,......


避免浮点操作的四舍五入错误
single, double与extended型的浮点变量存在着四舍五入问题.举个例子,假设我们用电脑使用4位数字,那么:

  1 / 3 = 0.3333 【程序编程相关: [red]如何使用Delphi设计强大

【推荐阅读: 在delphi中使用xml文档有两种方

【扩展信息:Yeeyee FrameWork (YF

我们知道3 * 1/3 = 1,但如果我们这样:

  x := 1 / 3;

  x := x * 3;

  if x = 1 then //结果将会不正确

为什么?因为x = 0.9999而不是1.

电脑不会有无限的小数位.从single到double到extended ,浮点类型可以给你更好的精确度,但是上述的四舍五入错误依然存在.

不要再作相等比较了,我们需要确定要多精确才够.

用下面的例程实现:

var

  esbtolerance: extended = 0.00000001; //设定所要的精确度


...   下一页
 ·常用文件目录操作    »显示摘要«
    摘要:1-得到短文件名 function getshortfilename(const filename : string) : string; var atmp: array[0..255] of char; begin if getshortpathname(pchar(filename),atmp,sizeof(atmp)-1)=0 then result:= filename ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE