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