Programmieren - alles kontrollieren 4.940 Themen, 20.676 Beiträge

Turbo Pascal - real runden auf 2 Kommastellen

Dau (Anonym) / 3 Antworten / Baumansicht Nickles

Hallo zusammen,
bei Berechnungen sollen die Werte nach der zweiten Kommastelle (DM-Beträge) abgeschnitten werden.
Für die Ausgabe kein Problem mit write (wert:5:2), aber das Programm rechnet ja mit z.B. 10.3456789 weiter und am Schluss habe ich bei den Pfennigbeträgen öfters Abweichungen um 1 Pfennig.
Ich habe probiert, die Werte zu zerlegen mit trunc/frac und den frac-wert zu konvertieren mit str (frac(wert):0:2, string_dummy), dann passt das auch, aber wenn ich dann mit val (string_dummy, wert) ihn wieder zurück in eine real verwandle, habe ich wieder alle Nachkommastellen da...
Bitte, bitte, ich bin am verzweifeln:
Wie mache ich eine Zuweisung z.B. 123.456789 := 123.45 ?
Und eben so, daß dann auch nur mit 123.45 weitergerechnet wird, nicht mit 123.456789
Danke schon mal im Voraus!

bei Antwort benachrichtigen
JamesBomb Dau (Anonym) „Turbo Pascal - real runden auf 2 Kommastellen“
Optionen

multipliziere mit 100;
runde mit round(real): integer;
dividiere diesen wert durch 100; (wieder real);

bei Antwort benachrichtigen
andreas (Anonym) Dau (Anonym) „Turbo Pascal - real runden auf 2 Kommastellen“
Optionen

Hi dau!

Es gibt eine einfache Lösung: addiere vor der Ausgabe den "Halben Wert" auf den gerundet werden soll.

Beispiel:

Wenn du auf zwei Stellen runden willst (also auf 0,01 genau), dann addiere 0,005.

Wenn es auf eine Stelle sein soll (also auf 0,1), dann addiere 0,05.

Danach wird richtig gerundet.

Bis denn
Andreas

bei Antwort benachrichtigen
Dau (Anonym) Nachtrag zu: „Turbo Pascal - real runden auf 2 Kommastellen“
Optionen

Herzlichen Dank! Ich hatte mich so auf die Möglichkeit mit str / val versteift, daß ich an gar nichts anderes mehr gedacht hatte...
Gruß dau

bei Antwort benachrichtigen