Step 7 Rechnungen mit Datentypen Real, Int, Dint in AWL

mkatmkat

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

ich programmiere noch nicht so lange mit AWL und
wollte etwas Grundlegendes wissen:

In einer Rechnung mit dem Datentyp Real habe ich folgende einfache Anwendung als Beispiel:
(Var1 und Var2 vom Datentyp real natürlich)

L #Var1
L 0.3481
/R
T #Var2


Wie sieht diese Rechnung als Code mit Int und Dint Variablen aus. Ist es möglich die Rechnung genau nachzustellen (mit 0,3) oder rundet man den Zahlenwert.
Dann würde es aber zu Ungenauigkeiten kommen.


Danke im Voraus.
 
Mit Dint und Int kannst du keine Gleitkommazahlen darstellen.

Alternativ kannst du natürlich deine Zahlen (abhängig von der Kommastelle) mit 100 oder 1000 etc.. Mutliplizieren und dann mit den Zahlen weiter rechnen.

z.B. Var1= 0.2

L #Var1
L 10.0
*R
RTD //Konvertiere Datentyp Real nach Dint
T #Dint // hier steht dann: Dint=2


usw.

Kommt darauf an, was du damit machen möchtest...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ok. Eigentlich wollte ich wissen, wenn Var1 und Var2 int Variablen sind oder beide Dint Variablen, ob man die obige Rechnung nachstellen kann, sodass es nur zu kleinen Ungenauigkeiten kommt.
Wie könnte der Code aussehen?
 
ok. Eigentlich wollte ich wissen, wenn Var1 und Var2 int Variablen sind oder beide Dint Variablen, ob man die obige Rechnung nachstellen kann, sodass es nur zu kleinen Ungenauigkeiten kommt.
Wie könnte der Code aussehen?

Hat Dir "Junge" eh schon gesagt, vorher multiplizieren- sollest aber wissen um welche Zahlenbereiche es geht, sonst erlebt man ein böse Überraschung (also wenn das Ergebnis der Multiplikation größer 2^31 ist).

Code:
L #Var1
L L#10000
*D
L L#3481
/D
T #Var2
 
Du kannst es mit beiden Datentypen "nachstellen" allerdings nur wie in den Beispielen als Ganzzahl.

....Ansonsten muss du mal genauer dein Problem erläutern.
 
Es ginge aber auch :
Code:
L  #Var1  // ist nun ein INT oder DINT
DTR  // macht daraus eine REAL-Zahl
L   0.3481
 /R    
RND+  //  wandelt in Ganzzahl zurück und rundet auf
T #Var2  // wäre dann dein INT oder DINT

Gruß
Larry
 
Zurück
Oben