Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Prism Problem beim Runden mit Exp (https://www.delphipraxis.net/68144-problem-beim-runden-mit-exp.html)

M4rv 25. Apr 2006 13:15


Problem beim Runden mit Exp
 
Ich soll für die schule ein Programm schreiben, dass eine Zahl auf die angegebenen stellen nach dem Komma rundet.
Mein gedanke war, die zahl*10^stellen zu nehmen dann mit der funktion Round zu runden und wieder die Zahl/10^stellen zu nehmen.
Beispiel: 5,23 auf eine stelle
5,23*10^1=52,3
round(52,3)=52
52/10^1=5,2
Soweit so gut. Aber das programm gibt 5,15031217640019 aus. Liegt das am Quellcode?

Delphi-Quellcode:
Procedure TForm1.Runden(Var Zahl:real;Stellen:integer);
Begin
Zahl:=Zahl *  exp (Stellen);
Zahl:=round(zahl);
zahl:=Zahl / exp(stellen);
edergebnis.text:=FloattoStr(Zahl);
end;

procedure TForm1.BtRundenClick(Sender: TObject);
Var X:real;Y:Integer;
begin
X:=StrToFloat(EdZahl.text);
Y:=StrToInt(EdStellen.text);
Runden(X,Y);
end;
Ps:EdErgebnis,EdZahl und EdStellen sind Edit felder.
Danke im Vorraus

negaH 25. Apr 2006 13:25

Re: Problem beim Runden mit Exp
 
Delphi-Quellcode:
var
  Power: Double;
begin
  Power := Math.IntPower(10, Stellen);
  Result := Round(Zahl * Power) / Power;
end;
Gruß Hagen


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:59 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz