if (StrToFloat(EdtCash.Text) < G_FactCash) then
明明在编辑框里面相等可怎么一比较就不等了呢?
浮点数好象不是很精确,那该用什么函数来比较呢?例如输入35.21转换成float后可能就变成35.20999999999了!!
哪位大虾有经验告诉我一下被

解决方案 »

  1.   

    兄弟,你可以直接比较字符串试试,这个应该可以,comparestr(edtcash.text, floattostr(G_factcash));看返回结果
      

  2.   

    if (EdtCash.Text < Format('%.2f',G_FactCash))//保留两位小数
      

  3.   

    Indicates when a floating-point variable or expression evaluates to zero, or very close to zero.UnitMathCategoryArithmetic routinesDelphi syntax:function IsZero(const A: Single; Epsilon: Single = 0): Boolean; overload;
    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;
      

  4.   

    if FormatFloat('0.00',StrToFloat(EdtCash.Text)) < FormatFloat('0.00',G_FactCash) then
      

  5.   

    StrToFloat 的返回值是 Extended 类型
    可以先定义一个与 G_FactCash 相同类型的变量,如:
    var
      f:Double;
     f:=StrToFloat(EdtCash.Text);
     if f<G_FactCash) then
       ...
      

  6.   

    各位老大,我卑鄙了点,这样实现的
    if (StrToFloat(EdtCash.Text) +0.001) < G_FactCash then
       dosomething因为涉及到money所有程序只要求保留2为小数.不知道这样做会不会出错呢!
      

  7.   

    浮点数是不能直接比较是否相等的,因为电脑中浮点数本身就不精确,有误差。
    传统的做法是两浮点数相减,看差值是否小于预设的一个很小的值就可以了。
    比如
    const e=0.000001;if (abs(f1-f2)<e)
    then
    ...
    else
    ...