Delphi/Lazarus: Funktion um Zahl auf beliebige Position vor oder nach Dezimalzeichen zu runden
Tutorial von Stefan Trost | Letztes Update am 21.01.2023 | Erstellt am 20.02.2014
Die normale Round-Funktion von Delphi oder Lazarus kann dazu verwendet werden, eine Kommazahl (wie zum Beispiel float oder extended) auf einen Integer-Wert zu runden:
var e: extended; i: integer; begin e := 12.3456; i := round(e); // 12
Was aber können wir machen, wenn wir die Rundungsgenauigkeit angeben wollen oder in die andere Richtung runden möchten? Also zum Beispiel auf eine Zehner- oder eine Tausender-Stelle? Wenn wir zum Beispiel aus einer 12 eine 10 machen möchten, aus einer 123 eine 100 oder aus 21345 die Z. 20000? Oder wenn die die eine oder andere Nachkommastellen behalten möchten?
In diesem Fall können wir die folgende Funktion verwenden:
function RoundEx(const AInput: extended; APlaces: integer): extended; var k: extended; begin if APlaces = 0 then begin result := round(AInput); end else begin if APlaces > 0 then begin k := power(10, APlaces); result := round(AInput * k) / k; end else begin k := power(10, (APlaces*-1)); result := round(AInput / k) * k; end; end; end;
Wie auch beim Runden in PHP, akzeptiert diese RoundEx-Funktion sowohl positive als auch negative Werte, je nachdem in welche Richtung man runden möchte. Hier ist ein Beispiel:
var e, r: extended; begin e := 123.456; r := RoundEx(e, 0); // 123 r := RoundEx(e, 1); // 123.5 r := RoundEx(e, 2); // 123.46 r := RoundEx(e, -1); // 120 r := RoundEx(e, -2); // 100
Der erste Parameter ist unsere Zahl, die wir runden möchten. Der zweite Parameter gibt die Anzahl von Nachkommastellen beziehungsweise Ziffern an, auf die wir runden möchten.
Wenn wir als zweiten Parameter 0 übergeben, erhalten wir das normale Ergebnis der round-Methode. Nehmen wir eine positive Zahl, schneidet unser Funktion entsprechend viele Nachkommastellen ab. Benutzen wir eine negative Zahl, können wir auf eine Zehnerstelle, eine Tausenderstelle oder jede andere höhere Dezimalstelle runden.
Über den Autor
Software von Stefan Trost finden Sie auf sttmedia.de. Benötigen Sie eine individuelle Software nach Ihren eigenen Wünschen? Schreiben Sie uns: sttmedia.de/kontakt
Profil anzeigen
Ähnliche Themen
Delphi/Lazarus: 3 Wege um eine Zahl auf X Nachkommastellen zu runden
Tutorial | 0 Kommentare
PHP: Zahlen runden
Tutorial | 0 Kommentare
Windows Batch Script: Computer herunterfahren
Tutorial | 2 Kommentare
Delphi/Lazarus: Nur Zahlen im Edit-Feld erlauben
Tipp | 0 Kommentare
Delphi/Lazarus: Kommazahlen aufrunden, abrunden und normal runden
Tipp | 1 Kommentar
Bild vor dem Upload im Browser verkleinern
Tutorial | 5 Kommentare
Delphi: Systemweiter HotKey
Tutorial | 3 Kommentare
Wichtiger Hinweis
Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.
Jetzt mitmachen
Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.