摘要载入中…    请稍等…












内容载入中…    请稍等…

如长时间看不到内容,请关闭浏览器,重新打开此页!

芯友首页 应用软件 编程开发 网络硬件 资源下载 动漫音乐 精美图库 芯友论坛 视频教程 电脑技术QQ群:73422782
 ★★photoshop学友-史上最强播放器★★
 位置:编程开发>Deiphi>Deiphi函数
◎→ 本类最新
在Delphi与C++之间实现函数与对象
用DELPHI编程求证两数互为质数
星期、干支、二十八宿计算公式
一些关于点的函数
公历到农历的转换法
◎→相关资源
C语言入门视频教程
C#编程WinForm入门视频
Asp.net入门视频教程下载
VC++编程视频教程下载
VB窗体文章
HTML入门教程
Deiphi实例教程
Deiphi窗体文章
Deiphi数据库编程
Deiphi网络编程
Deiphi图形图象文章
Deiphi系统文件
◎→ 热门资源
Listview中实现点击栏目标题排序
Microsoft Agent技术在Delphi中的
MIDAS中动态强制约束编程
Chuck Jazdzewski的离开意味着De
COM程序编写入门(三)
OICQ中用户图标选择的实现
DELPHI中利用对象的常用属性制作

避免浮点操作的四舍五入错误


日期:2008-10-20 22:02:26    来源:
   
 ·避免 Null 產生的錯誤
 ·delphi运行错误信息
避免浮点操作的四舍五入错误


Single, Double和Extended型的浮点变量存在着四舍五入问题。举个例子,假设我们用电脑使用4位数字,那么:
  1 / 3 = 0.3333

我们知道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; //设定所要的精确度

function SameFloat (const X1, X2: Extended): Boolean;
begin
  Result := abs (X1 - X2) < ESBTolerance
end;

function FloatIsZero (const X: Extended): Boolean;
begin
Result := abs (X) < ESBTolerance
end;

function FloatIsPositive (const X: Extended): Boolean;
begin
Result := (X >= ESBTolerance);
end;

function FloatIsNegative (const X: Extended): Boolean;
begin
  Result := (X <= -ESBTolerance);
end;

 [1]

如何避免asp的SQL的执行效率低

delphi编译错误信息

--->Hard Drive Inspector V2.42.402┊监视硬盘错误、温度等┊多国语言绿色特别版
--->SFV Checker V1.1.8┊监测FTP 传送文件是否正确或有中断错误┊英文绿色特别版
--->Prassi ONES(500K刻入软件,深山红叶专用) V2.1.358┊高品质数字刻录工具、可自动识别错误┊汉化修正绿色版
--->ClrMamePro 3.101a┊巨好ROM管理工具、已经修正了罕见的错误┊英文绿色免费版
--->Delphi编译错误中文手册
Tags:  避免 浮点 错误
{$enumber$}
芯友网版权所有 1999-2006 | 著作权与商标声明 | 法律声明 | 服务条款 | 隐私声明 | 联系我们