Afrunde til 2 decimaler

Tags:    delphi

Hvordan kan jeg afrunde med 2 decimaler?
alså jeg har et kanon langt tal.. lad os sige:
3.4346457547
når jeg bruger round(variable); så kotter den bare det hele efter komma? hvordan kan jeg afrunde til 2 decimaler?

MvH MulBo



9 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato
Hvis du laver min Single om til Extended er den mere præcis, men også en lille bitte smule langsommere!

function Hent2Decimaler(S : Extended) : Extended;
begin
Result := Int(S)+(Int(Frac(S)*100) * 0.01);
end;

procedure TForm1.FormCreate(Sender: TObject);
var
S : Extended;
begin
S := 5.123456;
Caption := FloatToStr(Hent2Decimaler(S));
end;



Lavede lige en funktion til dig!

function Hent2Decimaler(S : Single) : Single;
begin
Result := Int(S)+(Int(Frac(S)*100) * 0.01);
end;




Hvis du har en decimaltal 5.12345 vil den returnere 5.12 til dig!
Hvis du ikke bruger Single kan du bare ændre til det du nu bruger!



Hvis du har en decimaltal 5.12345 vil den returnere 5.12 til dig!
Hvis du ikke bruger Single kan du bare ændre til det du nu bruger!


Jeg har lavet den til Single istedet for Real og jeg har prøvet at bruge din function men ingen af tingene virker :/



Du kan også bruge denne...hvor S er decimaltallet!

StrToFloat(FloatToStrF(S,ffFixed,5,2))

Men den er bare meget langsommere, da den først konventere et decimaltal til en streng, afkorter og dernæst konventere den tilbage til en decimaltal!!!!!!!!!!!!!!!!!!!



Det kan jeg ikke forstå, det virker fint ved mig!

function Hent2Decimaler(S : Single) : Single;
begin
Result := Int(S)+(Int(Frac(S)*100) * 0.01);
end;

procedure TForm1.FormCreate(Sender: TObject);
var
S : Single;
begin
S := 5.123456;
Caption := FloatToStr(Hent2Decimaler(S));
end;

I dette eksempel har jeg sat mit kode i min forms OnCreate property. Og viser resultatet i min forms caption!



Du kan også bruge denne...hvor S er decimaltallet!

StrToFloat(FloatToStrF(S,ffFixed,5,2))

Men den er bare meget langsommere, da den først konventere et decimaltal til en streng, afkorter og dernæst konventere den tilbage til en decimaltal!!!!!!!!!!!!!!!!!!!


Det virkede og jeg kan ikke mærke et går langsomt... jeg når faktisk slet ikke at opfatte at den er færdig ;) så tak for hjælpen



Når jeg siger langsommere er det ikke noget der kan mærkes med mindre det bliver puttet i en algoritme! Jeg ved jo ikke i hvilken sammenhæng du vil bruge koden!



Hvordan kan jeg afrunde med 2 decimaler?
alså jeg har et kanon langt tal.. lad os sige:
3.4346457547
når jeg bruger round(variable); så kotter den bare det hele efter komma? hvordan kan jeg afrunde til 2 decimaler?

MvH MulBo


Hehe
Brug RoundTo(TAL,-2)

TAL skal bare være en Double :)

Med venlig hilsen
Dennis Lauritzen



t