Der Compiler kann also Zahlen als Real auswerten, sollange es sich nur um eine handelt.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
-
2006-06-23
Originally created by: Bernhard Werner
Hallo Markus,
es ist so: grundsätzlich erlaubt CoDeSys die Zuweisung von Integer zu Real ohne Konvertierung.
daher:
real1 := 1;
Implizit generiert der Compiler hier eine Konvertierung:
real1 := INT_TO_REAL(1);
das heisst aber nicht, dass real gerechnet wird, wenn die Zuweisung zu einer Real-Variablen erfolgt,
daher:
real1 := 1 / 3;
1 und 3 sind zwei Integer Konstanten, 1 / 3 als Integer gerechnet gibt 0. Das ganze lässt sich wieder problemlos real zuweisen und real ist natürlich dann auch 0.
Implizit rechnet der Compiler hier:
real1 := INT_TO_REAL(1/3);
Wenn man will, dass eine Konstante vom Typ real ist, muss man sie mit '.' schreiben, also
real1 := 1.0 / 3.0;
Bernhard Werner
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Bei RealVariable:=1; alles OK.
Bei RealVariable:=1/3; (Bahnhof).
Mit RealVariable:=1.0/3.0; alles OK.
Der Compiler kann also Zahlen als Real auswerten, sollange es sich nur um eine handelt.
Originally created by: Bernhard Werner
Hallo Markus,
es ist so: grundsätzlich erlaubt CoDeSys die Zuweisung von Integer zu Real ohne Konvertierung.
daher:
real1 := 1;
Implizit generiert der Compiler hier eine Konvertierung:
real1 := INT_TO_REAL(1);
das heisst aber nicht, dass real gerechnet wird, wenn die Zuweisung zu einer Real-Variablen erfolgt,
daher:
real1 := 1 / 3;
1 und 3 sind zwei Integer Konstanten, 1 / 3 als Integer gerechnet gibt 0. Das ganze lässt sich wieder problemlos real zuweisen und real ist natürlich dann auch 0.
Implizit rechnet der Compiler hier:
real1 := INT_TO_REAL(1/3);
Wenn man will, dass eine Konstante vom Typ real ist, muss man sie mit '.' schreiben, also
real1 := 1.0 / 3.0;
Bernhard Werner