Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Math.abs() in Script / Funktion

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Math.abs() in Script / Funktion

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

      Hallo Forum,

      Ich bin noch nicht lange mit node-red zu Gange. Eher grad beim Einarbeiten auf einem Raspi.

      Dabei ist mir aufgefallen, dass Math.abs() offenbar nicht arbeitet. Hat jemand einen Tip, woran das liegen könnte?

      Ich hab mal einen kleinen Testflow gemacht (siehe Bild).
      3999_mathabs.jpg

      Hier der Flow:

      [{"id":"8b07e542.c99468","type":"inject","z":"23e6ba9b.8080b6","name":"number (13.56)","topic":"","payload":"13.56","payloadType":"num","repeat":"","crontab":"","once":false,"x":155,"y":81,"wires":[["72a89e91.6902"]]},{"id":"9d858752.0e5a38","type":"debug","z":"23e6ba9b.8080b6","name":"","active":true,"console":"false","complete":"payload","x":154,"y":248,"wires":[]},{"id":"72a89e91.6902","type":"function","z":"23e6ba9b.8080b6","name":"abs","func":"msg.payload = Math.abs(msg.payload);\nreturn msg;","outputs":1,"noerr":0,"x":148,"y":166,"wires":[["9d858752.0e5a38"]]}]
      

      Vlt. weis jemand Rat

      Danke

      Reiner

      1 Reply Last reply Reply Quote 0
      • AlCalzone
        AlCalzone Developer last edited by

        Naja, der Absolutwert von 13.56 ist 13.56. Probier mal eine negative Zahl 😉

        Oder suchst du Math.round/Math.ceil/Math.floor?

        1 Reply Last reply Reply Quote 0
        • R
          rewenode last edited by

          Ja, sorry, haps inzwischen auch gemerkt;-)

          Eigentlich hab ich eine Methode für den Vorkommawert gesucht. Aber Number.toInteger() gibts wohl nicht mehr.

          Gibt es da was äquivalentes?, oder ist

          msg.payload = Math.trunc(Math.abs(msg.payload));
          

          die gängige Art?

          1 Reply Last reply Reply Quote 0
          • D
            dna909 last edited by

            Nimm doch einfach parseInt().

            dna909

            1 Reply Last reply Reply Quote 0
            • R
              rewenode last edited by

              Ja, geht. Aber das Math.abs() bliebe mir dennoch nicht erspart. Oder?

              Wird höchste Zeit, mir mal ein Javascript-Buch zu schnappen :mrgreen:

              Danke für die Hilfe

              1 Reply Last reply Reply Quote 0
              • AlCalzone
                AlCalzone Developer last edited by

                @rewenode:

                Ja, geht. Aber das Math.abs() bliebe mir dennoch nicht erspart. Oder? `
                Erwartest du negative Zahlen? Dann brauchst du es, sonst nicht.

                1 Reply Last reply Reply Quote 0
                • R
                  rewenode last edited by

                  > Erwartest du negative Zahlen? Dann brauchst du es, sonst nicht.
                  Nein in meinem Fall erwarte ich sie nicht. Konkret geht es um eine uptime Formatierung. Da reicht parseInt() oder Math.floor().

                  Ich habe eher gedacht, es gibt eine integer() Funktion und ich find sie bloß nicht.

                  Habs jetzt so gelöst:

                  //hours
                  var h = Math.floor(msg.payload.uptime/3600) ;
                  
                  //rest minutes
                  var mm = msg.payload.uptime % 3600
                  
                  //minutes
                  var m = Math.floor(mm/60);
                  
                  //seconds
                  var s = (mm % 60);
                  
                  //uptime as string 
                  msg.payload = "uptime: " +
                                h +
                                " h " +
                                m +
                                "min " +
                                s +
                                "sec";
                  return msg; 
                  
                  

                  Weis zwar nicht ob es optimalere Lösungen gibt, aber tut erst mal;-)

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

                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  812
                  Online

                  31.7k
                  Users

                  79.8k
                  Topics

                  1.3m
                  Posts

                  3
                  7
                  2198
                  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