if (StrToFloat(EdtCash.Text) < G_FactCash) then
明明在编辑框里面相等可怎么一比较就不等了呢?
浮点数好象不是很精确,那该用什么函数来比较呢?例如输入35.21转换成float后可能就变成35.20999999999了!!
哪位大虾有经验告诉我一下被
明明在编辑框里面相等可怎么一比较就不等了呢?
浮点数好象不是很精确,那该用什么函数来比较呢?例如输入35.21转换成float后可能就变成35.20999999999了!!
哪位大虾有经验告诉我一下被
解决方案 »
- Delphi 中怎样实现自动窗体锁定?
- DRIVER_INFO_OK是什么意思
- 如何操作文件和显示当前系统时间?
- 把以unicode编码的字符串转化成以gb编码的字符串
- 如何利用delphi开发b/s办公自动化应用程序
- 如何实时检测声卡此时的音量大小?
- delphi5/针式打印机 如何在win2000下打印自定义纸张?
- DBGridEH的字段可以不固定吗?
- Treeview高级编程问题!进者有分!会者帮忙!不会者帮我Up!大家共同进步!
- 请大家介绍几个求职的网站,我在广东,好像51JOB上招用DELPI的很少!
- 怎样把一个字符串数组存入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
...