STR->FLOAT (Modulbaustein)

Dezimalzahl als Zeichenkette in einen Zahlenwert (Float, Zahl mit Nachkommastellen) umwandeln

Verfügbar ab Firmware Version 4.1 Insider Preview 1

Inhalt dieser Seite
richtet sich an
Experten

 

 

Über Protokolle wie MQTT und HTTP-/Rest-API werden Dezimalzahlen oft als Zeichenkette übergeben und nicht als binär kodierter Zahlenwert. Im Timberwolf Server können mathematische Operationen nur mit binär kodierten Zahlenwerten ausgeführt werden, daher ist eine Wandlung meist sinnvoll. Zudem werden für Fließkommazahlen nur 8 Byte für die Speicherung benötigt.

Syntax

["STR->FLOAT","$In", $Out]

Funktion

Die Eingangszeichenkette "$In" wird in einen binär kodierte Fließkommazahl umgewandelt, welche in $Out bereitgestellt wird.

Eingänge

  • "$In" Zeichenkette, welche die umzuwandelnden Dezimalzahl enthält.
    Beispielweise wird die Zeichenkette “255.5” in den Zahlenwert 255,5 umgewandelt. Der Zahl in der Zeichenkette kann “+” vorangestellt sein, dies ist nicht zwingend notwendig.

  • Es wird ein Punkt als Trennzeichen für die Nachkommastellen erwartet

  • Für die Umwandlung genutzte Zeichen: +-1234567890.e sowie die Zeichenfolgen nan und inf mit 8 Bit kodiert (ASCII, ANSI, UTF-8), wobei der erlaubte Buchstabe e als auch die beiden Zeichenfolgen in Groß- oder Kleinschreibung (und beliebig gemischt) akzeptiert werden

  • Leerzeichen am Anfang der Zeichenkette werden ignoriert. Leerzeichen zwischen Zahlen führen zum Abbruch der Umwandlung

  • Am Ende der Zeichenkette kann mit Buchstaben ein Exponent zur Basis 10 angegeben werden

  • Keine Vor- und Nachgestellten anderen Zeichen (wir empfehlen, andere Textteile oder Einheitenbezeichnungen zuvor mit dem RegEx-Modul abzutrennen)

Ausgänge

  • $Out Umgewandelte Dezimalzahlen mit Nachkommastellen (8 Byte Float, vorzeichenbehaftet)

Besonderheiten

  • Es werden nur Zeichenketten mit 8 Bit pro Zeichen korrekt verarbeitet (ASCII, ANSI, UTF-8)

  • Der binär kodierte Zahlenwert am Ausgang wird als vorzeichenbehaftete 64 Bit Fließkommazahl ausgegeben

  • Eine negative Zahl in der Zeichenkette muss ein Minuszeichen (ohne Leerzeichen zwischen Minuszeichen und Zahl) vorangestellt haben

  • Die Zeichenkette muss mit einer Zahl oder EINEM Plus- oder Minuszeichen beginnen

  • Durch die interne Gleitkommadarstellung ist die Genauigkeit des umgewandelten Wertes begrenzt. Verwenden Sie STR->INT für ganzzahlige Werte wie Verbrauchszähler

  • Sollte die Zeichenkette außer den Zahlen weitere Zeichen nach den Zahlen enthalten, dann wird die Umwandlung an dieser Stelle abgebrochen, die bis dahin umgewandelte Zahl am Ausgang ausgegeben und im Logik Diagnosemonitor (unter “Warnungen & Fehler”) eine Warnung im Log ausgegeben

  • Die besonderen Werte Unendlich und keine Zahl können über die Zeichenketten “INF” und “NAN” erzeugt werden.

Anwendungen

  • Zeichenkette mit Dezimalzahl umwandeln,

    • um mit dem Zahlenwert Berechnungen durchzuführen

    • um den Zahlenwert in einer Zeitserie zu speichern, damit die Aggregatfunktionen der Datenbank genutzt werden können, eine grafische Darstellung möglich ist und der benötigte Speicherplatz reduziert wird

    • um den Zahlenwert in der VISU darzustellen und wertabhängige Regeln für die Formatierung von Zahlenwerten nutzen zu können

Beispiele

Erfolgreiche Wandlungen

  • Zeichenkette “100” wird umgewandelt in den Zahlenwert 100

  • Zeichenkette “100.1” wird umgewandelt in den Zahlenwert 100,1

  • Zeichenkette “-123” wird umgewandelt in den Zahlenwert -123

  • Zeichenkette “-123.456” wird umgewandelt in den Zahlenwert -123,456

  • Zeichenkette “123e4” wird umgewandelt in den Zahlenwert 1230000

  • Zeichenkette “43.4 Gramm” wird umgewandelt in 43,4 (Warnung im Log des Logik Diagnosemonitors)

FALSCHE, UNERWARTETE oder KEINE Wandlung möglich

  • Zeichenkette “100,1” wird umgewandelt in den Zahlenwert 100 (das Zeichen , wird ignoriert und alles was danach kommt, daher auch Fehlerausgabe im Log des Logik Diagnosemonitors)

  • Zeichenkette “1.000,1” wird umgewandelt in den Zahlenwert 1 (der Dezimalpunkt als Tausendertrennzeichen wird als Komma gewertet, das nachfolgende Komma ist ein nicht erlaubtes Zeichen und dies führt zum Abbruch der weiteren Konvertierung und Eintrag im Log)

  • Zeichenkette “1,234,456.789” wird umgewandelt in den Zahlenwert 1 (das Komma als Tausendertrennzeichen wird als ungültiges Zeichen betrachtet und an dieser Stelle die Konvertierung beendet, Eintrag im Log)

  • Zeichenkette “- 3,44 Grad Celsius” kann nicht gewandelt werden (Leerzeichen zwischen Minus und Zahl ist nicht erlaubt, Abbruch an dieser Stelle, daher kein Wert, Fehlerausgabe im Log des Logik Diagnosemonitors)

  • Zeichenkette “Temperatur -3°C” kann nicht gewandelt werden (Text vor der Zahl sind unerlaubte Zeichen, Abbruch an dieser Stelle, Fehlerausgabe im Log des Logik Diagnosemonitors)
    Tipp: Verwenden Sie das Regex Modul um zunächst den relevanten Zahlenteil von der Zeichenkette abzutrennen.

Entsprechendes Logik-Modul

 

 

2019 - 2024 by Elaborated Networks GmbH / Impressum / Datenschutzerklärung