11 Stimme

Delphi/Lazarus: Zahl auf Tausenderstelle runden (12345678) auf (12345000)

Frage von Mahdi | 20.02.2014 um 21:41

Ich würde gerne eine Zahl auf die Tausender-Stelle runden. Also zum Beispiel die Zahl 12345678 auf 12345000.

Wie kann ich das mit Delphi oder Lazarus bewerkstelligen?

Ich habe in Delphi auch schon mit SetRoundMode herum probiert, aber das hat leider nicht zum gewünschten Erfolg geführt.

AntwortenPositivNegativDatumStimmen
1Beste Antwort1 Stimme

Um auf die Tausender-Stelle zu runden, kannst du ihn Delphi nicht die normale round() Funktion verwenden, wie es zum Beispiel in PHP mit einer negativen Präzision möglich ist.

Probieren stattdessen einfach den folgenden Code aus:

var
  k: integer;
begin
  k := 123456;
  k := round(k/1000) * 1000;
  showmessage(inntostr(k));  // 123000

Wenn du wie in deinem Beispiel immer abrunden möchtest, kannst du die Funktion floor oder trunc anstelle von round verwenden:

k := 12345678;
k := floor(k/1000) * 1000;  // k = 12345000

Du hast mich mit deiner Frage auf die Idee gebracht, eine kleine Funktion zu schreiben, mit der man in Delphi oder Lazarus eine Zahl auf eine beliebige Anzahl von Nachkommastellen runden kann. Diese Funktion akzeptiert positive oder negative Werte als zweiten Parameter um zu einer beliebigen Position vor oder nach dem Dezimaltrennzeichen zu runden.
20.02.2014 um 23:48

AntwortenPositiv Negativ
11 Stimme

Vielleicht hilft dir auch die Funktion RoundTo weiter, die bereits in der Unit Math enthalten ist:

x:=RoundTo(12345, 3);  //12000

Oder mit dem Setzen von Round Mode:

SetRoundMode(rmTruncate);
x:=RoundTo(12345678, 3);  //12345000

SetRoundMode akzeptiert die folgenden Parameter:

ModeMethod
rmNearestround (normales round)
rmDownfloor (immer ab)
rmUpceil (immer auf)
rmTruncatetrunc (Wert abschneiden)

Um die RoundTo-Funktion davon abzuhalten, aufzurunden, kannst du einfach den rmTruncate Modus verwenden.
21.02.2014 um 02:26

AntwortenPositiv Negativ
Antworten

Ähnliche Themen

PHP: Zahlen runden

Tutorial | 0 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.