Gleitpunktzahl-Konvertierung
Undefiniertes Ergebnis bei Überschreitung des Wertebereichs Wenn der Eingangswert eines Typkonvertierungsoperators außerhalb des Wertebereichs des Ausgangsdatentyps liegt, ist das Ergebnis der Operation nicht definiert und abhängig von der Plattform. Dies ist beispielsweise der Fall, wenn ein negativer Operandenwert von LREAL in den Zieldatentyp UINT konvertiert wird. Auch ein Ausnahmefehler ist dann möglich! |
Informationsverlust möglich Wenn ein größerer Datentyp in einen kleineren Datentyp konvertiert wird, können Informationen verloren gehen. |
Wenn die Gleitpunktzahl innerhalb des Wertebereichs des Zieldatentyps liegt, arbeitet die Konvertierung auf allen Systemen gleich. Wenn die Gleitpunktzahl die Bereichsgrenze überschreitet, werden die ersten Bytes der Zahl nicht berücksichtigt. |
Rundungslogik Die Rundungslogik für Grenzfälle ist vom Zielsystem beziehungsweise von der FPU (Floating Point Unit) des Zielsystems abhängig. Ein Wert wie beispielsweise -1.5 kann auf verschiedenen Steuerungen unterschiedlich konvertiert werden. Fangen Sie Überschreitungen von Wertebereichen über die Applikation ab, um zielsystemunabhängigen Code zu programmieren. |
<type>_TO_REAL / <type>_TO_LREAL
Die Operatoren dienen der Konvertierung von einem anderen Datentyp in den Datentyp REAL oder LREAL.
Als Operand können Sie eine Variable oder ein Literal angeben.
Bei der Konvertierung wird gegebenenfalls gerundet.
Syntax:
<Datentyp>_TO_REAL (<Variablenname> | <Literal>)
<Datentyp>_TO_LREAL (<Variablenname> | <Literal>)
REAL_TO_<type> / LREAL_TO_<type>
Die Operatoren dienen der Konvertierung vom Datentyp REAL oder LREAL in einen anderen Datentyp.
Als Operand können Sie eine Variable oder ein Literal angeben.
Syntax:
REAL_TO_<Datentyp> (<Variablenname> | <Literal>)
LREAL_TO_<Datentyp> (<Variablenname> | <Literal>)
Rundung:
TwinCAT rundet den Gleitpunktzahl-Wert des Operanden nach oben oder unten auf einen ganzzahligen Wert und wandelt diesen in den entsprechenden Datentyp um. Bei 1 bis 4 hinter dem Punkt wird abgerundet, bei 5 bis 9 wird aufgerundet. Von dieser Rundung ausgenommen sind die Datentypen STRING, BOOL, REAL und LREAL.
Zu einem String konvertieren:
Bei einer Gleitpunktzahl-Konvertierung zu einem String ist die Anzahl der Nachkommastellen der Mantisse auf 6 begrenzt. Wenn die Zahl < 1 ist, gilt für die Mantisse m: 1 <= m < 10. Wenn die Mantisse mehr Stellen hinter dem Komma hat, wird auf die 6. Stelle gerundet und dann konvertiert.
Außerdem kann die Stringvariable für den Rückgabewert zu kurz deklariert sein. Dann wird der Rückgabestring rechts abgeschnitten.
Beispiele:
ST-Code | Ergebnis |
---|---|
| 2 |
| 1 |
| -2 |
| -1 |
FUP-Code | Ergebnis |
2 |
Siehe auch:
- Datentypen > REAL/LREAL