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. Math.abs() in Script / Funktion

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    22
    1
    1.1k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.1k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.4k

Math.abs() in Script / Funktion

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
7 Beiträge 3 Kommentatoren 2.4k Aufrufe
  • Ä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.
  • R Offline
    R Offline
    rewenode
    schrieb am zuletzt editiert von
    #1

    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 Antwort Letzte Antwort
    0
    • AlCalzoneA Offline
      AlCalzoneA Offline
      AlCalzone
      Developer
      schrieb am zuletzt editiert von
      #2

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

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

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

      1 Antwort Letzte Antwort
      0
      • R Offline
        R Offline
        rewenode
        schrieb am zuletzt editiert von
        #3

        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 Antwort Letzte Antwort
        0
        • D Offline
          D Offline
          dna909
          schrieb am zuletzt editiert von
          #4

          Nimm doch einfach parseInt().

          dna909

          Intel NUC7PJYH mit Proxmox, Odroid U2, CCU2, Philips Hue, ESP8266, Xiaomi Robot, Google Chromecast Audio, Instar 6012HD, Bosch HNG6764S6

          1 Antwort Letzte Antwort
          0
          • R Offline
            R Offline
            rewenode
            schrieb am zuletzt editiert von
            #5

            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 Antwort Letzte Antwort
            0
            • AlCalzoneA Offline
              AlCalzoneA Offline
              AlCalzone
              Developer
              schrieb am zuletzt editiert von
              #6

              @rewenode:

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

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

              1 Antwort Letzte Antwort
              0
              • R Offline
                R Offline
                rewenode
                schrieb am zuletzt editiert von
                #7

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

                794

                Online

                32.5k

                Benutzer

                81.6k

                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