Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. GetState.val Nachkommastellen festlegen

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    GetState.val Nachkommastellen festlegen

    This topic has been deleted. Only users with topic management privileges can see it.
    • 0
      0018 last edited by

      Hallo zusammen,

      ich lasse mir aktuell diverse Werte via Befehl über Telegram ausgeben. Die Werte haben allerdings 4 bis 5 Nachkommastellen.

      Gibt es die Möglichkeit die Nachkommastelle festzulegen?

      Folgenden Code verwende ich:

      var slaid = "hm-rega.0.7029"/*Strom Leistungsaufnahme aktuell*/;
      var sla = getState(slaid).val;
      
      

      sla lasse ich mir dann per Telegram Befehl schicken.

      Welche Möglichkeiten habe ich um den Wert auf 2 Nachkommastellen zu begrenzen bzw. kann ich das auch anders lösen?

      Mfg

      1 Reply Last reply Reply Quote 0
      • paul53
        paul53 last edited by

        Man kann den Wert in einen String mit vorgegebener Anzahl an Nachkommastellen (im Beispiel 2) umwandeln:

        var slaid = "hm-rega.0.7029"/*Strom Leistungsaufnahme aktuell*/;
        var sla = getState(slaid).val.toFixed(2) + ' W';
        

        und auch noch eine Maßeinheit mitgeben.

        1 Reply Last reply Reply Quote 0
        • 0
          0018 last edited by

          Super vielen Dank!

          Werde es nachher gleich mal umsetzen [emoji2]

          1 Reply Last reply Reply Quote 0
          • 0
            0018 last edited by

            Funktioniert das ganze auch bei setState? Würde gerne bei einer Funktion auch die Nachkommastelle mit angeben, da ich aktuell im Ergebnis 6 Nachkommastellen habe.

            function ZPDAY() {
               setState('javascript.0.Strom.Prozent.Stromverbrauch_%_S1+S2-DAY', (getState(SVD).val / getState(ZSZD).val) *100);
            }
            
            

            mfg

            1 Reply Last reply Reply Quote 0
            • P
              pix last edited by

              function ZPDAY() {
                 val wert = (getState(SVD).val / getState(ZSZD).val) *100;
                 setState('javascript.0.Strom.Prozent.Stromverbrauch_%_S1+S2-DAY', wert.toFixed(2));
              }
              
              

              Gruß

              Pix

              1 Reply Last reply Reply Quote 0
              • Bluefox
                Bluefox last edited by

                @pix:

                function ZPDAY() {
                   val wert = (getState(SVD).val / getState(ZSZD).val) *100;
                   setState('javascript.0.Strom.Prozent.Stromverbrauch_%_S1+S2-DAY', wert.toFixed(2));
                }
                
                

                Gruß

                Pix `
                Ich empfehle toFixed nicht zu benutzen. Da Ergebnis von toFixed ist "string".

                Besser

                setState('javascript.0.Strom.Prozent.Stromverbrauch_%_S1+S2-DAY', Math.round(wert * 100) / 100);
                
                
                1 Reply Last reply Reply Quote 0
                • 0
                  0018 last edited by

                  @Bluefox:

                  Ich empfehle toFixed nicht zu benutzen. Da Ergebnis von toFixed ist "string".

                  Besser

                  setState('javascript.0.Strom.Prozent.Stromverbrauch_%_S1+S2-DAY', Math.round(wert * 100) / 100);
                  
                  ```` `  
                  

                  Wie genau muss ich meine Berechnung

                  (getState(SVD).val / getState(ZSZD).val) *100
                  
                  

                  hier mit einbauen? Wie wird die Anzahl der Nachkommastelle hier definiert?

                  Ist (wert *100) / 100 nicht wieder = wert?

                  mfg

                  1 Reply Last reply Reply Quote 0
                  • Bluefox
                    Bluefox last edited by

                    @0018:

                    @Bluefox:

                    Ich empfehle toFixed nicht zu benutzen. Da Ergebnis von toFixed ist "string".

                    Besser

                    setState('javascript.0.Strom.Prozent.Stromverbrauch_%_S1+S2-DAY', Math.round(wert * 100) / 100);
                    
                    ```` `  
                    

                    Wie genau muss ich meine Berechnung

                    (getState(SVD).val / getState(ZSZD).val) *100
                    
                    

                    hier mit einbauen? Wie wird die Anzahl der Nachkommastelle hier definiert?

                    Ist (wert *100) / 100 nicht wieder = wert?

                    mfg `

                    var val = Math.round((getState(SVD).val / getState(ZSZD).val) *10000) / 100;
                    
                    Z = 6.7899;
                    6.7899 * 100 = 678.99;
                    Math.round(678.99) = 679;
                    679 / 100 = 6.79
                    
                    Math.round(Z * 100) / 100 = 6.79
                    
                    1 Reply Last reply Reply Quote 0
                    • 0
                      0018 last edited by

                      Perfekt, danke 🙂

                      1 Reply Last reply Reply Quote 0
                      • First post
                        Last post

                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      764
                      Online

                      31.7k
                      Users

                      79.8k
                      Topics

                      1.3m
                      Posts

                      4
                      9
                      2895
                      Loading More Posts
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes
                      Reply
                      • Reply as topic
                      Log in to reply
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                      The ioBroker Community 2014-2023
                      logo