TIA Rechnen mit Realzahlen

Credofire

Level-1
Beiträge
640
Reaktionspunkte
35
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo

Mir ist heute etwas aufgefallen was ich nicht verstehe.
TIA (V14SP1) meckert mir folgende Zeile an: #r1 := 60.0 / 360.0 * #PER; das die Genauigkeit usw. verloren gehen kann. Alle Variablen sind real-Zahlen.
Wenn ich nun #r1 := Real#60.0 / 360.0 * #PER; verwende wird nicht mehr rumgemeckert.

Warum wird nun die 60.0 angemeckert aber die 360.0 nicht?

So wie es scheint wird die 60.0 als LREAL interpretiert und bei der implizieten Wandlung von LREAL in REAL kommt es zu den möglichen Verlusten.
Sucht sich aber TIA nur den erste Zahlenwert aus und bei dem 2. Zahlenwert ist es dann egal?
An anderen Stellen, zB #stop := #stopram / #DRE * 333.334 wird auch nicht gemeckert.

Hat jemand eine kurze Erklärung dazu?
 
Sucht sich aber TIA nur den erste Zahlenwert aus und bei dem 2. Zahlenwert ist es dann egal?
Meine Vermutung:

Der erste Zahlenwert in der Rechnung legt scheinbar für den Interpreter die gewünschte Genauigkeit fest.

Bei #r1 := 60.0 / 360.0 * #PER; ist sie am Beginn der Rechnung unklar, daher nimmt der Interpreter die größtmögliche für die Berechnung von 60.0 / 360.0 mit LREAL an. Am Ende der Berechnung wird dann impliziert die Genauigkeit verkleinert, daher die Warnung.

Wird die Genauigkeit des ersten Operanden bereits auf REAL "eingeschränkt", werden die folgenden "unklaren" Operanden auf REAL angepasst, weil die Genauigkeit eh' nicht mehr größer werden kann.

Das Gleiche warnungsfreie Ergebnis erhält man, wenn die "klare" REAL-Variable nach vorne gesetzt wird:
Code:
[COLOR=#333333]#r1 := [/COLOR][COLOR=#333333]#PER * [/COLOR][COLOR=#333333]60.0 / 360.0;[/COLOR]
 
Zurück
Oben