Real Wert nach einer Komma Stelle abrunden

"Abrunden" heißt: die nachfolgenden Stellen einfach abschneiden/weglassen?
Was soll bei +123.456 herauskommen?
Was soll bei -123.456 herauskommen?
In welchem Wertebereich bewegt sich das Ergebnis?
Was soll mit dem abgerundeten Wert passieren?

Fahrplan: Wert mit 10.0 multiplizieren, dann mit TRUNC oder ähnlichem in Ganzzahl umwandeln und dann in der Anzeige eine Stelle von hinten ein Dezimalkomma einfügen.
Oder falls das eine HMI-Anzeige ist, kann man vermutlich einfach am Ausgabefeld einstellen, daß nur eine Nachkommastelle angezeigt wird.

Welche SPS und welche Programmiersoftware verwendest Du?

Harald
 
Erster Teil siehe oben:
Wert mit 10.0 multiplizieren, dann mit TRUNC oder ähnlichem in Ganzzahl umwandeln
Zweiter Teil:
Dann wieder zurück in REAL wandeln und dann wieder durch 10.0 Teilen
 
TRUNC gibt es im Codesys-Universum nicht meine ich, aber das mit 10 multiplizieren ist schon mal der erste Schritt.
Das Ganze dann mit REAL_TO_INT in eine Ganzzahl wandeln, mit INT_TO_REAL wieder in eine Real und das dann durch 10 teilen.
Aber bitte darauf achten nicht 10, sondern 10.0 zu verwenden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
... dass REAL_TO_INT rundet war mir nicht bewusst.
Das Runden ist sogar sehr sinnvoll, Oliver, weil die Zahlen als REAL z.T. gar nicht "exakt" darstellbar sind.
Schneidet man z.B. bei 123,99999 die NachkommaStellen ab, statt zu runden, dann ist die Abweichung wesentlich grösser als erwünscht.

PS:
Was ich bei dieser Gelegenheit dazugelernt habe:
Der TRUNC rundet bei negativen Zahlen auf! Entspricht also nicht dem, was man aus anderen Sprachen von der Funktion INT (=Integer) kennt.
 
Erster Teil siehe oben:
Wert mit 10.0 multiplizieren, dann mit TRUNC oder ähnlichem in Ganzzahl umwandeln
Zweiter Teil:
Dann wieder zurück in REAL wandeln und dann wieder durch 10.0 Teilen
Codesys-TRUNC wandelt in INT, geht also nur von -3276.0 .. +3276.0 - reicht der Wertebereich?
Codesys-TRUNC rundet negative Zahlen AUF! Ist das so gewollt?

Sobald das Ergebnis wieder in REAL gewandelt und weitergerechnet wird, ist das ganze Abschneiden der Nachkommastellen genau genommen "für die Katz", weil da tauchen wieder Nachkommastellen auf:
TRUNC(123.456 * 10.0) ergibt 1234
INT_TO_REAL(1234) ergibt 1234.0
1234.0 / 10.0 ergibt 123.40000152587890625


@saboz66
Wenn Du keine Lust hast, Nachfragen zu beantworten, warum sollten wir dann Lust haben, Deine Frage fundiert zu beantworten? Da kommen dann vielleicht 10 verschiedene Vorschläge, von denen 8 untauglich für das benötigte Resultat sind. :unsure:

Also wie sieht es aus, willst Du uns noch etwas mehr erzählen, was Du Dir von dem Abschneiden der Nachkommastellen erhoffst, wozu das gut sein soll? Oder bist Du mit der erstbesten, denkbar schlechtesten Lösung schon zufrieden (weil nur die bekommt von Dir ein Danke...)?

Harald
 
Zuletzt bearbeitet:
Codesys-TRUNC wandelt in INT, geht also nur von -3276.0 .. +3276.0 - reicht der Wertebereich?
Codesys-TRUNC rundet negative Zahlen AUF! Ist das so gewollt?

Sobald das Ergebnis wieder in REAL gewandelt und weitergerechnet wird, ist das ganze Abschneiden der Nachkommastellen genau genommen "für die Katz", weil da tauchen wieder Nachkommastellen auf:
TRUNC(123.456 * 10.0) ergibt 1234
INT_TO_REAL(1234) ergibt 1234.0
1234.0 / 10.0 ergibt 123.40000152587890625


@saboz66
Wenn Du keine Lust hast, Nachfragen zu beantworten, warum sollten wir dann Lust haben, Deine Frage fundiert zu beantworten? Da kommen dann vielleicht 10 verschiedene Vorschläge, von denen 8 untauglich für das benötigte Resultat sind. :unsure:

Also wie sieht es aus, willst Du uns noch etwas mehr erzählen, was Du Dir von dem Abschneiden der Nachkommastellen erhoffst, wozu das gut sein soll? Oder bist Du mit der erstbesten, denkbar schlechtesten Lösung schon zufrieden (weil nur die bekommt von Dir ein Danke...)?

Harald
Hallo Harald
ich habe das voll verpeilt! Entschuldigung der Fahrplan von dir hat auch Funktioniert, nur war ich zu sehr in der Materie, dass ich ein kurzez Dankeschön vergessen habe zu schreiben und beim nächsten Kommentar auch ausprobiert habe und das wider rum mit Dankeschön kommentiert habe. Nochmals, Dankeschön für die erste ausführliche Antwort die direkt Richtig war!
 
Zurück
Oben