Runden

Maurice

Level-1
Beiträge
8
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,

Ich habe nochmals eine Frage.
Ich habe Analog Werte, die ich nach der ersten bearbeitung Runden will. Ich habe eine Funktion gefunden, LREAL_TO_FMTSTR, mit der das Runden gut funktioniert. Nun mein Problem liegt aber daran, dass der gerundete Wert ein Stirng ist und ich diesen nicht weiterverarbeiten kann. Wenn ich den String wieder in ein Real umwandel will, war das Runden nutzlos.
Kann mir jemand einen Tipp geben, wie ich einen Wert Runden kann und anschliessend mit dem gerundeten Wert Rechnen kann?

Gruss

Maurice
 
TRUNC rundet nicht, sondern schneidet den Nachkommaanteil ab. Wenn der Wertebereich eines DINT ausreicht, geht das Runden am Einfachsten mit REAL_TO_DINT.
 
Das Abschneiden des Nachkommateils ist eines der sehr vielen möglichen Rundungsverfahren, TRUNC rundet in Richtung 0.
Das Runden zur nächstgelegenen Rundungszahl erledigt z.B. die Konvertierungsfunktion.
Ein Beispiel, wie man die Konvertierungsfunktion nutzen kann, um REAL Variable auf eine Nachkommastelle zur nächstgelegenen Rundungszahl zu runden:
Code:
r2:= DINT_TO_REAL(REAL_TO_DINT(r1 * 10.0))/10.0;
Gruß
witkatz
 
Zuviel Werbung?
-> Hier kostenlos registrieren
TRUNC rundet nicht, sondern schneidet den Nachkommaanteil ab.

dann addierst Du vorher entsprechend dazu. Wenn Du beispielsweise auf ganze Zahlen runden willst addierst Du 0.5 dazu, bei Runden auf eine Kommastelle nimmst Du erst mal 10, addierst 0,5 drauf, TRUNC, dann wieder durch 10 dividiert.
 
Zurück
Oben