if (StrToFloat(EdtCash.Text) < G_FactCash) then
明明在编辑框里面相等可怎么一比较就不等了呢?
浮点数好象不是很精确,那该用什么函数来比较呢?例如输入35.21转换成float后可能就变成35.20999999999了!!
哪位大虾有经验告诉我一下被
明明在编辑框里面相等可怎么一比较就不等了呢?
浮点数好象不是很精确,那该用什么函数来比较呢?例如输入35.21转换成float后可能就变成35.20999999999了!!
哪位大虾有经验告诉我一下被
解决方案 »
- 帮忙翻译下VC写的动态库函数在delphi的写法!
- 请问Delphi读写硬盘分区表的方法?
- 如何把STRING写到CHAR中急。。在线等
- fastreport,怎么ShowPreparedReport打开后,马上关闭报表?
- 如何制作安装程序?怎么知道当前支持文件名?在线等候,急
- 有关对word的操作,帮帮我看看。
- delphi编程!
- 请问各位,谁会用ftDateTime?我想时间类型中输入的时候自动有 - -,听说ftDateTime可以,可老提示有错
- 谁有自动检测邮箱的代码,我想自己编一个自己用.
- DCom 问题 client端出现"interface not supported "
- 怎样把一个字符串数组存入Access数据库?
- 关于Treeview组件与数据库结构的问题
function IsZero(const A: Double; Epsilon: Double = 0): Boolean; overload;
function IsZero(const A: Extended; Epsilon: Extended = 0): Boolean; overload;C++ syntax:extern PACKAGE bool __fastcall IsZero(const float A, float Epsilon);
extern PACKAGE bool __fastcall IsZero(const double A, double Epsilon);
extern PACKAGE bool __fastcall IsZero(const Extended A, Extended Epsilon);DescriptionUse IsZero to test whether the value specified by AValue is zero, or differs from zero by at most Epsilon.示例:
uses
Math;
procedure TForm1.Button1Click(Sender: TObject);
begin
if IsZero(StrToFloat(Edit1.Text)-StrToFloat(Edit2.Text),0) then
Edit3.Text:='='
else
Edit3.Text:='<>';end;
可以先定义一个与 G_FactCash 相同类型的变量,如:
var
f:Double;
f:=StrToFloat(EdtCash.Text);
if f<G_FactCash) then
...
if (StrToFloat(EdtCash.Text) +0.001) < G_FactCash then
dosomething因为涉及到money所有程序只要求保留2为小数.不知道这样做会不会出错呢!
传统的做法是两浮点数相减,看差值是否小于预设的一个很小的值就可以了。
比如
const e=0.000001;if (abs(f1-f2)<e)
then
...
else
...