Mathematische Funktionen
- Last UpdatedSep 25, 2024
- 2 minute read
Verwenden Sie mathematische Funktionen, um die Antwort eines bestimmten mathematischen Ausdrucks zurückzugeben.
In QuickScript werden alle mathematischen Operationen intern als Double berechnet, unabhängig vom Datentyp des Operanden. Gemäß den mathematischen Standardregeln wird das Ergebnis in Teilungs-Operationen immer gerundet, um die Genauigkeit zu erhalten. Das Runden wird immer am Endergebnis durchgeführt, nicht bei Zwischenergebnissen, und der Quotient entspricht dem Ziel-Datentypen. Dies ist die Standard-Methodik für SCADA- und DCS-Systeme und liefert die Datenintegrität, Aufrechterhaltung der Genauigkeit, Zeitstempel und allgemeine Weitergabe und Aggregation von Datenqualität, die für diese Systeme erforderlich ist.
Wenn Sie bei jedem Schritt runden möchten anstatt nur beim Endergebnis, können Sie das eingebaute QuickScript für .NET-Bibliotheken nutzen, und die Methoden System.Math.Floor und System.Math.Round verwenden, um ausdrücklich die Zwischenschritte runden. Beachten Sie folgendes Skript als Beispiel:
dim dividend as integer;
dim divisor as integer;
dim quotient as integer;
dim remainder as integer;
dividend = 8;
divisor = 3;
LogMessage("Value of dividend = " + dividend);
LogMessage("Value of divisor = " + divisor);
quotient = dividend/divisor;
LogMessage("Value of quotient = " + quotient);
remainder = dividend mod divisor;
LogMessage ("Value of remainder = " + remainder);
dividend = divisor*quotient +remainder;
LogMessage ("Value of dividend = " + dividend);
Das Ergebnis ist: 8 / 3 = 3
Wenn Sie stattdessen den Rest weg lassen möchten (nicht das Endergebnis auf die nächste Ganzzahl runden), können Sie einen Aufruf hinzufügen, um die Methode Math.Floor aufzurufen und folgendes zu verwenden:
dim dividend as integer;
dim divisor as integer;
dim quotient as integer;
dim remainder as integer;
dividend = 8;
divisor = 3;
LogMessage("Value of dividend = " + dividend);
LogMessage("Value of divisor = " + divisor);
// *** Aufruf für Math.Floor hinzufügen. Dies lässt den Rest weg anstatt das interne
Double-Ergebnis zu einer Ganzzahl zu runden
quotient = System.Math.Floor(dividend/divisor);
LogMessage("Value of quotient = " + quotient);
remainder = dividend mod divisor;
LogMessage ("Value of remainder = " + remainder);
dividend = divisor*quotient +remainder;
LogMessage ("Value of dividend = " + dividend);
Das Ergebnis ist: 8 / 3 = 2 (Rest 2)