![]() |
Auf 2 stellen Runden
Habe bisher mit Fox Pro gearbeitet und stehe auf dem Schlauch:
Runden: Ich will eine Zahl auf 2 Stellen runden, meine Test funktioniert nicht, es will einfach die Funktion roundto nicht akzeptieren:
Delphi-Quellcode:
Peter
var
Form1: TForm1; rech1 : single; rech2 : single; rech3 : single; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin rech1 := 8; rech2 := 9; rech3 := rech1 / rech2; label1.Caption := floattostr(roundto(rech3, -2)); end; |
Re: Auf 2 stellen Runden
Delphi ist nun mal nicht FoxPro.
Delphi-Quellcode:
function Round(e: Extended; precision: Integer): Extended;
var factor: Extended; begin factor := Power(10, precision); Result := Round(e * factor) / factor; end; |
DP-Maintenance
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "Sonstige Fragen zu Delphi" verschoben.
Delphi-Frage |
Re: Auf 2 stellen Runden
Hallo Peter,
du mußt die Unit Math in die USES-Anweisung aufnehmen, um die Funktion RoundTo nutzen zu können. Gruß Hawkeye |
Re: Auf 2 stellen Runden
warum nimmst du nicht
Delphi-Quellcode:
Das ergibt immer zwei korrekt gerundete Nachkommastellen.
FloatToStrF(Wert, ffFixed, 8, 2);
|
Re: Auf 2 stellen Runden
Hallo Leute,
mit dem Runden habe ich so meine Probleme. Zum Beispiel wird aus 30,14500 beim runden immer 30,14000 statt 30,15000 aus 3,145 wird 3,15 aus 4,145 wird 4,14 ... zum Testen jeweils um Eins erhöht aus 31,145 wird 31,14 aus 32,145 wird 32,15 Hat jemand dafür eine Erklärung? @Hawkeye: Die Funktion RoundTo gibt es bei mir auch mit der Unit Math nicht. mfg eddy |
Re: Auf 2 stellen Runden
Ich glaube zu diesem Thema mit dem Kaufmännischen Rundungsverhalten von Delphi gabs schon mal min. einen Thread!
Versuch mal was zu finden mit der Suchfunktion! |
Re: Auf 2 stellen Runden
Zitat:
|
Re: Auf 2 stellen Runden
Zitat:
Delphi-Quellcode:
versucht?
ShowMessage(Format('%.2f', [31.145]));
|
Re: Auf 2 stellen Runden
Hallo Leute
Aufgrund Euerer Antworten ist mir plötzlich eine Lösung eingefallen, die in allen Programmiersprachen funktioniert: Klar Fox ist nicht Delphi, darum wechsle ich auch auf Delphi und verlasse das Fox, doch ich habe eine Lösung, die ich vom Fox her abgewandelt habe: Beispiel:
Delphi-Quellcode:
Und wenn wir schon dabei sind, hier meine Lösung um auf 5 zu Runden, was man in der CH braucht:
var
Form1: TForm1; rech1 : single; rech2 : single; rech3 : single; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin rech1 := 8; rech2 := 9; rech3 := rech1 / rech2; label1.Caption := floattostr(round(rech3 * 100) / 100); end;
Delphi-Quellcode:
var
Form1: TForm1; rech1 : single; rech2 : single; rech3 : single; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin rech1 := 2.75; rech2 := 55; rech3 := rech1 / rech2; label1.Caption := floattostr(round(rech3 * 20) / 20); end; Also vielen Dank für die Tipps, doch so unter uns, bin verdammt stolz, dass ich eine Lösung gefunden habe. Peter |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:03 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