Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Verwirrung mit Datentypen in JS (string vs. number )

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    4.1k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.2k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.6k

Verwirrung mit Datentypen in JS (string vs. number )

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
javascript
7 Beiträge 6 Kommentatoren 689 Aufrufe 4 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • H Offline
    H Offline
    h1ob
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen,

    ich habe ein Skript um den Gasverbrauch aufzuarbeiten und in SQL / Sourceanalytix zu verarbeiten. Das funktioniert soweit auch ganz gut nur bekomme ich eine Warnung im Log bzgl. der Zuweisung von Werten. Hier der interessante Teil des Skripts:

    var iAktuell = 'javascript.0.scriptEnabled.Zaehler.Gas.aktuellerstand' // Aktueller Stand des Gaszählers - Ist ein State vom Typ "Number"
    [...]
    
    
    // Hier wird eine kleine Zwischenberechnung gemacht (iZwSumme wird mir bei MouseOver ebenfalls als Number angezeigt)
    var lfAktuellm3 = ((parseFloat(getState(iAktuell).val)) + iZwSumme / 1000).toFixed(3);
    
    // Beim Versuch den Wert in in den o.g. State zurück zu schreiben erhalte ich die Warnung:
    setState(iAktuell, lfAktuellm3);
    // Auch so wird es nicht besser... Die Warnung bleibt
    setState(iAktuell, parseFloat(lfAktuellm3).toFixed(3));
    
    

    Hier nochmal die vollständige Warnung:

    You are assigning a string to the state "javascript.0.scriptEnabled.Zaehler.Gas.aktuellerstand" which expects a number. Please fix your code to use a number or change the state type to string. 
    

    Jemand eine Idee, wie man es besser machen könnte?

    paul53P AsgothianA UncleSamU HomoranH 4 Antworten Letzte Antwort
    0
    • H h1ob

      Hallo zusammen,

      ich habe ein Skript um den Gasverbrauch aufzuarbeiten und in SQL / Sourceanalytix zu verarbeiten. Das funktioniert soweit auch ganz gut nur bekomme ich eine Warnung im Log bzgl. der Zuweisung von Werten. Hier der interessante Teil des Skripts:

      var iAktuell = 'javascript.0.scriptEnabled.Zaehler.Gas.aktuellerstand' // Aktueller Stand des Gaszählers - Ist ein State vom Typ "Number"
      [...]
      
      
      // Hier wird eine kleine Zwischenberechnung gemacht (iZwSumme wird mir bei MouseOver ebenfalls als Number angezeigt)
      var lfAktuellm3 = ((parseFloat(getState(iAktuell).val)) + iZwSumme / 1000).toFixed(3);
      
      // Beim Versuch den Wert in in den o.g. State zurück zu schreiben erhalte ich die Warnung:
      setState(iAktuell, lfAktuellm3);
      // Auch so wird es nicht besser... Die Warnung bleibt
      setState(iAktuell, parseFloat(lfAktuellm3).toFixed(3));
      
      

      Hier nochmal die vollständige Warnung:

      You are assigning a string to the state "javascript.0.scriptEnabled.Zaehler.Gas.aktuellerstand" which expects a number. Please fix your code to use a number or change the state type to string. 
      

      Jemand eine Idee, wie man es besser machen könnte?

      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von paul53
      #2

      @h1ob toFixed(3) erzeugt einen String.

      @h1ob sagte:

      Idee, wie man es besser machen könnte?

      var lfAktuellm3 = Math.round(parseFloat(getState(iAktuell).val) * 1000 + iZwSumme) / 1000; // Zahl mit max. 3 Nachkommastellen
      

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      1 Antwort Letzte Antwort
      0
      • H h1ob

        Hallo zusammen,

        ich habe ein Skript um den Gasverbrauch aufzuarbeiten und in SQL / Sourceanalytix zu verarbeiten. Das funktioniert soweit auch ganz gut nur bekomme ich eine Warnung im Log bzgl. der Zuweisung von Werten. Hier der interessante Teil des Skripts:

        var iAktuell = 'javascript.0.scriptEnabled.Zaehler.Gas.aktuellerstand' // Aktueller Stand des Gaszählers - Ist ein State vom Typ "Number"
        [...]
        
        
        // Hier wird eine kleine Zwischenberechnung gemacht (iZwSumme wird mir bei MouseOver ebenfalls als Number angezeigt)
        var lfAktuellm3 = ((parseFloat(getState(iAktuell).val)) + iZwSumme / 1000).toFixed(3);
        
        // Beim Versuch den Wert in in den o.g. State zurück zu schreiben erhalte ich die Warnung:
        setState(iAktuell, lfAktuellm3);
        // Auch so wird es nicht besser... Die Warnung bleibt
        setState(iAktuell, parseFloat(lfAktuellm3).toFixed(3));
        
        

        Hier nochmal die vollständige Warnung:

        You are assigning a string to the state "javascript.0.scriptEnabled.Zaehler.Gas.aktuellerstand" which expects a number. Please fix your code to use a number or change the state type to string. 
        

        Jemand eine Idee, wie man es besser machen könnte?

        AsgothianA Offline
        AsgothianA Offline
        Asgothian
        Developer
        schrieb am zuletzt editiert von
        #3

        @h1ob Nimm mal das "toFixed(3)" weg. Das konvertiert die Nummer zum String.

        Wenn du sicher gehen willst das du nur 3 Nachkommastellen hast bietet sich "math.round(val * 1000) / 1000" an

        A.

        ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
        "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

        1 Antwort Letzte Antwort
        0
        • H h1ob

          Hallo zusammen,

          ich habe ein Skript um den Gasverbrauch aufzuarbeiten und in SQL / Sourceanalytix zu verarbeiten. Das funktioniert soweit auch ganz gut nur bekomme ich eine Warnung im Log bzgl. der Zuweisung von Werten. Hier der interessante Teil des Skripts:

          var iAktuell = 'javascript.0.scriptEnabled.Zaehler.Gas.aktuellerstand' // Aktueller Stand des Gaszählers - Ist ein State vom Typ "Number"
          [...]
          
          
          // Hier wird eine kleine Zwischenberechnung gemacht (iZwSumme wird mir bei MouseOver ebenfalls als Number angezeigt)
          var lfAktuellm3 = ((parseFloat(getState(iAktuell).val)) + iZwSumme / 1000).toFixed(3);
          
          // Beim Versuch den Wert in in den o.g. State zurück zu schreiben erhalte ich die Warnung:
          setState(iAktuell, lfAktuellm3);
          // Auch so wird es nicht besser... Die Warnung bleibt
          setState(iAktuell, parseFloat(lfAktuellm3).toFixed(3));
          
          

          Hier nochmal die vollständige Warnung:

          You are assigning a string to the state "javascript.0.scriptEnabled.Zaehler.Gas.aktuellerstand" which expects a number. Please fix your code to use a number or change the state type to string. 
          

          Jemand eine Idee, wie man es besser machen könnte?

          UncleSamU Offline
          UncleSamU Offline
          UncleSam
          Developer
          schrieb am zuletzt editiert von
          #4

          @h1ob sagte in Verwirrung mit Datentypen in JS (string vs. number ):

          toFixed(3)

          https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed

          Return value

          A string representing the given number using fixed-point notation.

          toFixed() gibt einen String zurück. Wenn du eine Zahl übergeben willst, dann lass das toFixed() einfach weg.

          Bitte bei Problemen mit meinen Adaptern, Issue auf GitHub erfassen: Loxone | I2C | Luxtronik2
          ♡-lichen Dank an meine Sponsoren

          1 Antwort Letzte Antwort
          0
          • H h1ob

            Hallo zusammen,

            ich habe ein Skript um den Gasverbrauch aufzuarbeiten und in SQL / Sourceanalytix zu verarbeiten. Das funktioniert soweit auch ganz gut nur bekomme ich eine Warnung im Log bzgl. der Zuweisung von Werten. Hier der interessante Teil des Skripts:

            var iAktuell = 'javascript.0.scriptEnabled.Zaehler.Gas.aktuellerstand' // Aktueller Stand des Gaszählers - Ist ein State vom Typ "Number"
            [...]
            
            
            // Hier wird eine kleine Zwischenberechnung gemacht (iZwSumme wird mir bei MouseOver ebenfalls als Number angezeigt)
            var lfAktuellm3 = ((parseFloat(getState(iAktuell).val)) + iZwSumme / 1000).toFixed(3);
            
            // Beim Versuch den Wert in in den o.g. State zurück zu schreiben erhalte ich die Warnung:
            setState(iAktuell, lfAktuellm3);
            // Auch so wird es nicht besser... Die Warnung bleibt
            setState(iAktuell, parseFloat(lfAktuellm3).toFixed(3));
            
            

            Hier nochmal die vollständige Warnung:

            You are assigning a string to the state "javascript.0.scriptEnabled.Zaehler.Gas.aktuellerstand" which expects a number. Please fix your code to use a number or change the state type to string. 
            

            Jemand eine Idee, wie man es besser machen könnte?

            HomoranH Nicht stören
            HomoranH Nicht stören
            Homoran
            Global Moderator Administrators
            schrieb am zuletzt editiert von
            #5

            @h1ob sagte in Verwirrung mit Datentypen in JS (string vs. number ):

            javascript.0.scriptEnabled.Zaehler.Gas.aktuellerstand

            Warum liegt das Skript im Systemverzeichnis script.enabled?

            kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

            Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

            der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

            H 1 Antwort Letzte Antwort
            0
            • HomoranH Homoran

              @h1ob sagte in Verwirrung mit Datentypen in JS (string vs. number ):

              javascript.0.scriptEnabled.Zaehler.Gas.aktuellerstand

              Warum liegt das Skript im Systemverzeichnis script.enabled?

              H Offline
              H Offline
              h1ob
              schrieb am zuletzt editiert von
              #6

              Ich danke euch. Da stand ich wohl komplett auf dem Schlauch. Die Warnung ist nun weg.

              @Homoran said in Verwirrung mit Datentypen in JS (string vs. number ):

              @h1ob sagte in Verwirrung mit Datentypen in JS (string vs. number ):

              javascript.0.scriptEnabled.Zaehler.Gas.aktuellerstand

              Warum liegt das Skript im Systemverzeichnis script.enabled?

              Das Skript liegt da nicht. Nur die beiden states die ich für das Skript brauche. Ist unschön, ich weiß. Aber das Skript ist mittlerweile ein paar Jahre alt und damals wusste ich es nicht besser.

              AlCalzoneA 1 Antwort Letzte Antwort
              0
              • H h1ob

                Ich danke euch. Da stand ich wohl komplett auf dem Schlauch. Die Warnung ist nun weg.

                @Homoran said in Verwirrung mit Datentypen in JS (string vs. number ):

                @h1ob sagte in Verwirrung mit Datentypen in JS (string vs. number ):

                javascript.0.scriptEnabled.Zaehler.Gas.aktuellerstand

                Warum liegt das Skript im Systemverzeichnis script.enabled?

                Das Skript liegt da nicht. Nur die beiden states die ich für das Skript brauche. Ist unschön, ich weiß. Aber das Skript ist mittlerweile ein paar Jahre alt und damals wusste ich es nicht besser.

                AlCalzoneA Offline
                AlCalzoneA Offline
                AlCalzone
                Developer
                schrieb am zuletzt editiert von
                #7

                @h1ob sagte in Verwirrung mit Datentypen in JS (string vs. number ):

                Aber das Skript ist mittlerweile ein paar Jahre alt und damals wusste ich es nicht besser.

                Grund genug es jetzt mal richtig zu machen :)

                Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                1 Antwort Letzte Antwort
                0
                Antworten
                • In einem neuen Thema antworten
                Anmelden zum Antworten
                • Älteste zuerst
                • Neuste zuerst
                • Meiste Stimmen


                Support us

                ioBroker
                Community Adapters
                Donate

                638

                Online

                32.7k

                Benutzer

                82.4k

                Themen

                1.3m

                Beiträge
                Community
                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                ioBroker Community 2014-2025
                logo
                • Anmelden

                • Du hast noch kein Konto? Registrieren

                • Anmelden oder registrieren, um zu suchen
                • Erster Beitrag
                  Letzter Beitrag
                0
                • Home
                • Aktuell
                • Tags
                • Ungelesen 0
                • Kategorien
                • Unreplied
                • Beliebt
                • GitHub
                • Docu
                • Hilfe