Q&A

  • 소수이하 절사부분이 넘 어려워요.
입력값을 가지고 소수이하 2자리까지 남기고 3번째자리부터는 잘라버릴려고 합니다.

var

a : real;

begin

a := strtofloat(edit1.text); //<-- 3.3입력



if (a > 3.3) or (a < 5.2) then

showmessage('ok');

이렇게하면 a값에 3.2999999999927 이라는 값이 입력됩니다.

이것을 비교할 수 있는 방법이 없을까요?

고수님들의 현명한 조언 부탁드립니다.

1  COMMENTS
  • Profile
    Gruz 2000.10.25 05:30
    전호영 wrote:

    > 입력값을 가지고 소수이하 2자리까지 남기고 3번째자리부터는 잘라버릴려고 합니다.

    > var

    > a : real;

    > begin

    > a := strtofloat(edit1.text); //<-- 3.3입력

    >

    > if (a > 3.3) or (a < 5.2) then

    > showmessage('ok');

    > 이렇게하면 a값에 3.2999999999927 이라는 값이 입력됩니다.

    > 이것을 비교할 수 있는 방법이 없을까요?

    > 고수님들의 현명한 조언 부탁드립니다.





    unit Unit1;



    interface



    uses

    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

    StdCtrls;



    type

    TForm1 = class(TForm)

    Button1: TButton;

    Edit1: TEdit;

    Label1: TLabel;

    Edit2: TEdit;

    procedure Button1Click(Sender: TObject);

    private

    { Private declarations }

    public

    { Public declarations }

    end;



    var

    Form1: TForm1;



    implementation



    {$R *.DFM}



    function myRealTrunc(x:real;y:integer):real;

    var

    iTmp:integer;

    begin

    iTmp:=round(x*y);

    result:=iTmp/y;

    end;



    procedure TForm1.Button1Click(Sender: TObject);

    var

    iTmp:integer;

    rTmp:real;

    begin

    rTmp:=StrToFloat(edit1.text);

    iTmp:=StrToInt(edit2.text);

    showmessage(FloatToStr(myRealTrunc(rTmp,iTmp)));

    end;



    end.