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!
Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge
multipliziere mit 100;
runde mit round(real): integer;
dividiere diesen wert durch 100; (wieder real);
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
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