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. Blockly
  5. [Vorlage] Zifferngruppe und Ersetzen von Dezimaltrennzeichen

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    15
    1
    813

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    1.9k

[Vorlage] Zifferngruppe und Ersetzen von Dezimaltrennzeichen

Geplant Angeheftet Gesperrt Verschoben Blockly
javascriptblockly
8 Beiträge 6 Kommentatoren 2.0k Aufrufe 6 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.
  • O Offline
    O Offline
    obakuhl
    Developer
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen,

    im Zuge der Erstellung von PushBenachrichtigungen für die Familie jeden Morgen, um das Infektionsgeschehen des CoronaVirus (Adapter) im Auge zu behalten habe ich mich etwas mit der Behandlung bzw. Änderungen von Zahlenwerten beschäftigt. Da ich viel mit Blockly mache sind meine ersten Versuche auch mit Blockly-Bausteinen selber gewesen. Relativ schnell habe ich gemerkt, dass ich auf keinen grünen Zweig komme und habe mich etwas mit JavaScript beschäftigt. Als ich dann noch entdeckt habe, dass es möglich ist JavaScript Funktionen in Blockly mit Informationen zu füttern habe ich mich an zwei Funktionen zur Datenaufbereitung gewagt, die sich die Familie gewünscht hat.

    1. Punkt als Trennung bei großen Zahlen
      Beispiele: 5960 → 5.960 | 27 → 27 | 2739417 → 2.739.417

    2. Konvertiere Punkt in Komma
      Beispiele: 27.38 → 27,38 | 938.1 → 938,1

    JavaScript Funktionen man mit folgendem Baustein sehr leicht in Blockly integrieren:

    JavaScriptBausteinReturn.png

    Diesen Baustein einfach nach rechts rausziehen und loslassen. Damit ist der Baustein bereit bearbeitet zu werden.

    Zu 1. - Punkt als Trennung bei großen Zahlen:

    Anstatt "etwas tun" schreiben wir zur Beschreibung der Funktion "Punkt bei Tausendern". Danach erstellen wir eine Variable über das Zahnrad, die der JavaScript Funktion übergeben werden kann und benennen diese von "x" auf "DigitGrouping" um.

    CreateVar.png

    Nach einem Klick auf das Zahnrad verschwindet das PopUpMenü wieder. Wir können nun die eigentliche Funktion einfügen. Dazu gehen wir auf die drei Punkte ganz rechts und fügen folgendes dort ein:

    DigitGrouping = '' + DigitGrouping;
    if (DigitGrouping.length > 3) {
        var mod = DigitGrouping.length % 3;
        var output = (mod > 0 ? (DigitGrouping.substring(0,mod)) : '');
        for (i=0 ; i < Math.floor(DigitGrouping.length / 3); i++) {
            if ((mod == 0) && (i == 0))
            output += DigitGrouping.substring(mod+ 3 * i, mod + 3 * i + 3);
            else
            // hier wird das Trennzeichen festgelegt mit '.'
            output+= '.' + DigitGrouping.substring(mod + 3 * i, mod + 3 * i + 3);
            }
        return (output);
        }
    else return DigitGrouping;
    

    Quelle des Codes

    Nach einem Klick auf Speichern ist der Baustein soweit startklar. Neben der neuen Variable "DigitGrouping" wurde auch ein neuer Baustein unter "Funktionen" erstellt:

    neuerBaustein.png

    Jetzt können wir loslegen und das Skript nutzen. Mit Hilfe des neuen Bausteins können wir z.B. über den LogAusgabeBaustein (debug output) unsere unterteilte Zahl ausgeben lassen. Das Ergebnis im log lautet "284.923".

    DigitGrouping.PNG

    So wird das Skript nur einmal beim Speichern (wenn das Skript bereits ausgeführt wird) ausgeführt. Für zyklische Ausführungen ist natürlich ein Trigger notwendig.

    Zu 2. - Konvertiere Punkt in Komma:

    Wir nutzen wieder den gleichen Baustein wie bei 1. Punkt. Anstatt "etwas tun" schreiben wir zur Beschreibung der Funktion diesmal "Konvertiere Punkt zu Komma". Danach erstellen wir eine Variable über das Zahnrad, die der JavaScript Funktion übergeben werden kann und benennen diese von "x" auf "ConvertString" um.

    CreateVar2.png

    Nach einem Klick auf das Zahnrad verschwindet das PopUpMenü wieder. Wir können nun die eigentliche Funktion einfügen. Dazu gehen wir auf die drei Punkte ganz rechts und fügen folgendes dort ein:

    ConvertString = ConvertString.toString().replace('.', ',');
    
    return ConvertString;
    

    Nach einem Klick auf Speichern ist auch dieser Baustein soweit startklar. Neben der neuen Variable "ConvertString" wurde auch ein neuer Baustein unter "Funktionen" erstellt:

    neuerBaustein2.png

    Jetzt können wir auch hier loslegen und das Skript nutzen. Mit Hilfe des neuen Bausteins können wir z.B. über den LogAusgabeBaustein (debug output) unsere "konvertierte" Zahl ausgeben lassen. Das Ergebnis im log lautet "27,84".

    ConvertString.PNG

    Auch hier wird das Skript so nur einmal beim Speichern (wenn das Skript bereits ausgeführt wird) ausgeführt. Für zyklische Ausführungen ist ein Trigger notwendig.

    Das wars :grin: Da ich nie das gefunden habe, was ich suchte habe ich diesen Thread eröffnet, um anderen Suchenden eine Hilfe zu bieten. Alle Variablennamen können individuell angepasst werden, im Skript muss dann analog auch der Variablenname angepasst werden.

    F B PamfP 3 Antworten Letzte Antwort
    6
    • O obakuhl

      Hallo zusammen,

      im Zuge der Erstellung von PushBenachrichtigungen für die Familie jeden Morgen, um das Infektionsgeschehen des CoronaVirus (Adapter) im Auge zu behalten habe ich mich etwas mit der Behandlung bzw. Änderungen von Zahlenwerten beschäftigt. Da ich viel mit Blockly mache sind meine ersten Versuche auch mit Blockly-Bausteinen selber gewesen. Relativ schnell habe ich gemerkt, dass ich auf keinen grünen Zweig komme und habe mich etwas mit JavaScript beschäftigt. Als ich dann noch entdeckt habe, dass es möglich ist JavaScript Funktionen in Blockly mit Informationen zu füttern habe ich mich an zwei Funktionen zur Datenaufbereitung gewagt, die sich die Familie gewünscht hat.

      1. Punkt als Trennung bei großen Zahlen
        Beispiele: 5960 → 5.960 | 27 → 27 | 2739417 → 2.739.417

      2. Konvertiere Punkt in Komma
        Beispiele: 27.38 → 27,38 | 938.1 → 938,1

      JavaScript Funktionen man mit folgendem Baustein sehr leicht in Blockly integrieren:

      JavaScriptBausteinReturn.png

      Diesen Baustein einfach nach rechts rausziehen und loslassen. Damit ist der Baustein bereit bearbeitet zu werden.

      Zu 1. - Punkt als Trennung bei großen Zahlen:

      Anstatt "etwas tun" schreiben wir zur Beschreibung der Funktion "Punkt bei Tausendern". Danach erstellen wir eine Variable über das Zahnrad, die der JavaScript Funktion übergeben werden kann und benennen diese von "x" auf "DigitGrouping" um.

      CreateVar.png

      Nach einem Klick auf das Zahnrad verschwindet das PopUpMenü wieder. Wir können nun die eigentliche Funktion einfügen. Dazu gehen wir auf die drei Punkte ganz rechts und fügen folgendes dort ein:

      DigitGrouping = '' + DigitGrouping;
      if (DigitGrouping.length > 3) {
          var mod = DigitGrouping.length % 3;
          var output = (mod > 0 ? (DigitGrouping.substring(0,mod)) : '');
          for (i=0 ; i < Math.floor(DigitGrouping.length / 3); i++) {
              if ((mod == 0) && (i == 0))
              output += DigitGrouping.substring(mod+ 3 * i, mod + 3 * i + 3);
              else
              // hier wird das Trennzeichen festgelegt mit '.'
              output+= '.' + DigitGrouping.substring(mod + 3 * i, mod + 3 * i + 3);
              }
          return (output);
          }
      else return DigitGrouping;
      

      Quelle des Codes

      Nach einem Klick auf Speichern ist der Baustein soweit startklar. Neben der neuen Variable "DigitGrouping" wurde auch ein neuer Baustein unter "Funktionen" erstellt:

      neuerBaustein.png

      Jetzt können wir loslegen und das Skript nutzen. Mit Hilfe des neuen Bausteins können wir z.B. über den LogAusgabeBaustein (debug output) unsere unterteilte Zahl ausgeben lassen. Das Ergebnis im log lautet "284.923".

      DigitGrouping.PNG

      So wird das Skript nur einmal beim Speichern (wenn das Skript bereits ausgeführt wird) ausgeführt. Für zyklische Ausführungen ist natürlich ein Trigger notwendig.

      Zu 2. - Konvertiere Punkt in Komma:

      Wir nutzen wieder den gleichen Baustein wie bei 1. Punkt. Anstatt "etwas tun" schreiben wir zur Beschreibung der Funktion diesmal "Konvertiere Punkt zu Komma". Danach erstellen wir eine Variable über das Zahnrad, die der JavaScript Funktion übergeben werden kann und benennen diese von "x" auf "ConvertString" um.

      CreateVar2.png

      Nach einem Klick auf das Zahnrad verschwindet das PopUpMenü wieder. Wir können nun die eigentliche Funktion einfügen. Dazu gehen wir auf die drei Punkte ganz rechts und fügen folgendes dort ein:

      ConvertString = ConvertString.toString().replace('.', ',');
      
      return ConvertString;
      

      Nach einem Klick auf Speichern ist auch dieser Baustein soweit startklar. Neben der neuen Variable "ConvertString" wurde auch ein neuer Baustein unter "Funktionen" erstellt:

      neuerBaustein2.png

      Jetzt können wir auch hier loslegen und das Skript nutzen. Mit Hilfe des neuen Bausteins können wir z.B. über den LogAusgabeBaustein (debug output) unsere "konvertierte" Zahl ausgeben lassen. Das Ergebnis im log lautet "27,84".

      ConvertString.PNG

      Auch hier wird das Skript so nur einmal beim Speichern (wenn das Skript bereits ausgeführt wird) ausgeführt. Für zyklische Ausführungen ist ein Trigger notwendig.

      Das wars :grin: Da ich nie das gefunden habe, was ich suchte habe ich diesen Thread eröffnet, um anderen Suchenden eine Hilfe zu bieten. Alle Variablennamen können individuell angepasst werden, im Skript muss dann analog auch der Variablenname angepasst werden.

      F Offline
      F Offline
      fastfoot
      schrieb am zuletzt editiert von
      #2

      @obakuhl mit Node 14.x funktioniert auch Intl.NumberFormat('de-DE').format(12345.67)

      javascript.0 (250) script.js.Aktiv.ScriptJS: 12.345,67
      

      iobroker läuft unter Docker auf QNAP TS-451+
      SkriptRecovery: https://forum.iobroker.net/post/930558

      1 Antwort Letzte Antwort
      2
      • O obakuhl

        Hallo zusammen,

        im Zuge der Erstellung von PushBenachrichtigungen für die Familie jeden Morgen, um das Infektionsgeschehen des CoronaVirus (Adapter) im Auge zu behalten habe ich mich etwas mit der Behandlung bzw. Änderungen von Zahlenwerten beschäftigt. Da ich viel mit Blockly mache sind meine ersten Versuche auch mit Blockly-Bausteinen selber gewesen. Relativ schnell habe ich gemerkt, dass ich auf keinen grünen Zweig komme und habe mich etwas mit JavaScript beschäftigt. Als ich dann noch entdeckt habe, dass es möglich ist JavaScript Funktionen in Blockly mit Informationen zu füttern habe ich mich an zwei Funktionen zur Datenaufbereitung gewagt, die sich die Familie gewünscht hat.

        1. Punkt als Trennung bei großen Zahlen
          Beispiele: 5960 → 5.960 | 27 → 27 | 2739417 → 2.739.417

        2. Konvertiere Punkt in Komma
          Beispiele: 27.38 → 27,38 | 938.1 → 938,1

        JavaScript Funktionen man mit folgendem Baustein sehr leicht in Blockly integrieren:

        JavaScriptBausteinReturn.png

        Diesen Baustein einfach nach rechts rausziehen und loslassen. Damit ist der Baustein bereit bearbeitet zu werden.

        Zu 1. - Punkt als Trennung bei großen Zahlen:

        Anstatt "etwas tun" schreiben wir zur Beschreibung der Funktion "Punkt bei Tausendern". Danach erstellen wir eine Variable über das Zahnrad, die der JavaScript Funktion übergeben werden kann und benennen diese von "x" auf "DigitGrouping" um.

        CreateVar.png

        Nach einem Klick auf das Zahnrad verschwindet das PopUpMenü wieder. Wir können nun die eigentliche Funktion einfügen. Dazu gehen wir auf die drei Punkte ganz rechts und fügen folgendes dort ein:

        DigitGrouping = '' + DigitGrouping;
        if (DigitGrouping.length > 3) {
            var mod = DigitGrouping.length % 3;
            var output = (mod > 0 ? (DigitGrouping.substring(0,mod)) : '');
            for (i=0 ; i < Math.floor(DigitGrouping.length / 3); i++) {
                if ((mod == 0) && (i == 0))
                output += DigitGrouping.substring(mod+ 3 * i, mod + 3 * i + 3);
                else
                // hier wird das Trennzeichen festgelegt mit '.'
                output+= '.' + DigitGrouping.substring(mod + 3 * i, mod + 3 * i + 3);
                }
            return (output);
            }
        else return DigitGrouping;
        

        Quelle des Codes

        Nach einem Klick auf Speichern ist der Baustein soweit startklar. Neben der neuen Variable "DigitGrouping" wurde auch ein neuer Baustein unter "Funktionen" erstellt:

        neuerBaustein.png

        Jetzt können wir loslegen und das Skript nutzen. Mit Hilfe des neuen Bausteins können wir z.B. über den LogAusgabeBaustein (debug output) unsere unterteilte Zahl ausgeben lassen. Das Ergebnis im log lautet "284.923".

        DigitGrouping.PNG

        So wird das Skript nur einmal beim Speichern (wenn das Skript bereits ausgeführt wird) ausgeführt. Für zyklische Ausführungen ist natürlich ein Trigger notwendig.

        Zu 2. - Konvertiere Punkt in Komma:

        Wir nutzen wieder den gleichen Baustein wie bei 1. Punkt. Anstatt "etwas tun" schreiben wir zur Beschreibung der Funktion diesmal "Konvertiere Punkt zu Komma". Danach erstellen wir eine Variable über das Zahnrad, die der JavaScript Funktion übergeben werden kann und benennen diese von "x" auf "ConvertString" um.

        CreateVar2.png

        Nach einem Klick auf das Zahnrad verschwindet das PopUpMenü wieder. Wir können nun die eigentliche Funktion einfügen. Dazu gehen wir auf die drei Punkte ganz rechts und fügen folgendes dort ein:

        ConvertString = ConvertString.toString().replace('.', ',');
        
        return ConvertString;
        

        Nach einem Klick auf Speichern ist auch dieser Baustein soweit startklar. Neben der neuen Variable "ConvertString" wurde auch ein neuer Baustein unter "Funktionen" erstellt:

        neuerBaustein2.png

        Jetzt können wir auch hier loslegen und das Skript nutzen. Mit Hilfe des neuen Bausteins können wir z.B. über den LogAusgabeBaustein (debug output) unsere "konvertierte" Zahl ausgeben lassen. Das Ergebnis im log lautet "27,84".

        ConvertString.PNG

        Auch hier wird das Skript so nur einmal beim Speichern (wenn das Skript bereits ausgeführt wird) ausgeführt. Für zyklische Ausführungen ist ein Trigger notwendig.

        Das wars :grin: Da ich nie das gefunden habe, was ich suchte habe ich diesen Thread eröffnet, um anderen Suchenden eine Hilfe zu bieten. Alle Variablennamen können individuell angepasst werden, im Skript muss dann analog auch der Variablenname angepasst werden.

        B Offline
        B Offline
        bruesche
        schrieb am zuletzt editiert von
        #3

        @obakuhl Ich habe dein Skript komplett übernommen, nur ersetze ich Komma durch Semikolon, da ih einen Datenpunkt habe, der mehrere Werte mit Komma separiert. Diese werde benötige ich aber für die Value List mit Semikolon separiert.
        Dein Skript arbeitet einwandfrei, nur wandelt es nur das erste Komma in ein Semikolon um und macht dann nichts mehr. Was muss ich tun, damit dein Skript den kompletten Datenpunkt durchforstet und die Komma durch Semikolons ersetzt?

        Danke für Hilfe!

        A 1 Antwort Letzte Antwort
        0
        • B bruesche

          @obakuhl Ich habe dein Skript komplett übernommen, nur ersetze ich Komma durch Semikolon, da ih einen Datenpunkt habe, der mehrere Werte mit Komma separiert. Diese werde benötige ich aber für die Value List mit Semikolon separiert.
          Dein Skript arbeitet einwandfrei, nur wandelt es nur das erste Komma in ein Semikolon um und macht dann nichts mehr. Was muss ich tun, damit dein Skript den kompletten Datenpunkt durchforstet und die Komma durch Semikolons ersetzt?

          Danke für Hilfe!

          A Offline
          A Offline
          Ahnungsbefreit
          schrieb am zuletzt editiert von
          #4

          @bruesche Wenn es wirklich nur um das Ersetzen von Komma durch Semikolon geht, kannst Du das einfacher haben:

          59e69978-2ede-45be-9d97-a563f3fb6623-image.png

          Und in der JS Funktion steht eine Zeile Code:

          return stringSource.split(whatToReplace).join(toReplaceWithWhat);
          

          Wenn meine Antwort hilfreich war, dürft Ihr das gerne durch einen "Upvote" (der kleine "^" unten rechts) zum Ausdruck bringen.

          1 Antwort Letzte Antwort
          1
          • O obakuhl

            Hallo zusammen,

            im Zuge der Erstellung von PushBenachrichtigungen für die Familie jeden Morgen, um das Infektionsgeschehen des CoronaVirus (Adapter) im Auge zu behalten habe ich mich etwas mit der Behandlung bzw. Änderungen von Zahlenwerten beschäftigt. Da ich viel mit Blockly mache sind meine ersten Versuche auch mit Blockly-Bausteinen selber gewesen. Relativ schnell habe ich gemerkt, dass ich auf keinen grünen Zweig komme und habe mich etwas mit JavaScript beschäftigt. Als ich dann noch entdeckt habe, dass es möglich ist JavaScript Funktionen in Blockly mit Informationen zu füttern habe ich mich an zwei Funktionen zur Datenaufbereitung gewagt, die sich die Familie gewünscht hat.

            1. Punkt als Trennung bei großen Zahlen
              Beispiele: 5960 → 5.960 | 27 → 27 | 2739417 → 2.739.417

            2. Konvertiere Punkt in Komma
              Beispiele: 27.38 → 27,38 | 938.1 → 938,1

            JavaScript Funktionen man mit folgendem Baustein sehr leicht in Blockly integrieren:

            JavaScriptBausteinReturn.png

            Diesen Baustein einfach nach rechts rausziehen und loslassen. Damit ist der Baustein bereit bearbeitet zu werden.

            Zu 1. - Punkt als Trennung bei großen Zahlen:

            Anstatt "etwas tun" schreiben wir zur Beschreibung der Funktion "Punkt bei Tausendern". Danach erstellen wir eine Variable über das Zahnrad, die der JavaScript Funktion übergeben werden kann und benennen diese von "x" auf "DigitGrouping" um.

            CreateVar.png

            Nach einem Klick auf das Zahnrad verschwindet das PopUpMenü wieder. Wir können nun die eigentliche Funktion einfügen. Dazu gehen wir auf die drei Punkte ganz rechts und fügen folgendes dort ein:

            DigitGrouping = '' + DigitGrouping;
            if (DigitGrouping.length > 3) {
                var mod = DigitGrouping.length % 3;
                var output = (mod > 0 ? (DigitGrouping.substring(0,mod)) : '');
                for (i=0 ; i < Math.floor(DigitGrouping.length / 3); i++) {
                    if ((mod == 0) && (i == 0))
                    output += DigitGrouping.substring(mod+ 3 * i, mod + 3 * i + 3);
                    else
                    // hier wird das Trennzeichen festgelegt mit '.'
                    output+= '.' + DigitGrouping.substring(mod + 3 * i, mod + 3 * i + 3);
                    }
                return (output);
                }
            else return DigitGrouping;
            

            Quelle des Codes

            Nach einem Klick auf Speichern ist der Baustein soweit startklar. Neben der neuen Variable "DigitGrouping" wurde auch ein neuer Baustein unter "Funktionen" erstellt:

            neuerBaustein.png

            Jetzt können wir loslegen und das Skript nutzen. Mit Hilfe des neuen Bausteins können wir z.B. über den LogAusgabeBaustein (debug output) unsere unterteilte Zahl ausgeben lassen. Das Ergebnis im log lautet "284.923".

            DigitGrouping.PNG

            So wird das Skript nur einmal beim Speichern (wenn das Skript bereits ausgeführt wird) ausgeführt. Für zyklische Ausführungen ist natürlich ein Trigger notwendig.

            Zu 2. - Konvertiere Punkt in Komma:

            Wir nutzen wieder den gleichen Baustein wie bei 1. Punkt. Anstatt "etwas tun" schreiben wir zur Beschreibung der Funktion diesmal "Konvertiere Punkt zu Komma". Danach erstellen wir eine Variable über das Zahnrad, die der JavaScript Funktion übergeben werden kann und benennen diese von "x" auf "ConvertString" um.

            CreateVar2.png

            Nach einem Klick auf das Zahnrad verschwindet das PopUpMenü wieder. Wir können nun die eigentliche Funktion einfügen. Dazu gehen wir auf die drei Punkte ganz rechts und fügen folgendes dort ein:

            ConvertString = ConvertString.toString().replace('.', ',');
            
            return ConvertString;
            

            Nach einem Klick auf Speichern ist auch dieser Baustein soweit startklar. Neben der neuen Variable "ConvertString" wurde auch ein neuer Baustein unter "Funktionen" erstellt:

            neuerBaustein2.png

            Jetzt können wir auch hier loslegen und das Skript nutzen. Mit Hilfe des neuen Bausteins können wir z.B. über den LogAusgabeBaustein (debug output) unsere "konvertierte" Zahl ausgeben lassen. Das Ergebnis im log lautet "27,84".

            ConvertString.PNG

            Auch hier wird das Skript so nur einmal beim Speichern (wenn das Skript bereits ausgeführt wird) ausgeführt. Für zyklische Ausführungen ist ein Trigger notwendig.

            Das wars :grin: Da ich nie das gefunden habe, was ich suchte habe ich diesen Thread eröffnet, um anderen Suchenden eine Hilfe zu bieten. Alle Variablennamen können individuell angepasst werden, im Skript muss dann analog auch der Variablenname angepasst werden.

            PamfP Offline
            PamfP Offline
            Pamf
            schrieb am zuletzt editiert von
            #5

            @obakuhl Bei Zahlen mit Nachkommastellen habe ich Probleme. Hier werden die 1000 er Punkte falsch gesetzt, bei gerundeten Zahlen funktioniert es. Gibt es hier noch eine Lösung?

            O 1 Antwort Letzte Antwort
            0
            • PamfP Pamf

              @obakuhl Bei Zahlen mit Nachkommastellen habe ich Probleme. Hier werden die 1000 er Punkte falsch gesetzt, bei gerundeten Zahlen funktioniert es. Gibt es hier noch eine Lösung?

              O Offline
              O Offline
              obakuhl
              Developer
              schrieb am zuletzt editiert von
              #6

              @pamf In der Tat wird das nicht berücksichtigt. Du kannst folgendes Skript statt dem bestehenden probieren:

              DigitGrouping = Intl.NumberFormat('de-DE').format(DigitGrouping);
              
              DigitGrouping = DigitGrouping.toString().replace('.', 'x');
              DigitGrouping = DigitGrouping.toString().replace(',', '.');
              DigitGrouping = DigitGrouping.toString().replace('x', ',');
              
              return DigitGrouping;
              

              Folgendes wird gemacht: Der Variable DigitGrouping wurde eine Zahl zugewiesen. Diese wird in das de-DE Format gebracht. Bei mir führt dies aber noch nicht zum gewünschten Format (obwohl in den ioBrokerEinstellungen "Float Teiler Zeichen" auf Komma steht. So wird z.B. nur mit der ersten Zeile im Skript aus 1234.45 -> 1,234.45. Mit der Funktion 'toString' in den Zeilen 2, 3, 4 werden die ',' und '.' ausgetauscht. So wird aus 1234.45 -> 1.234,45. Falls bei dir jetzt doch mit dem ganzen Skript aus 1234.45 -> 1,234.45 werden sollte dann musst du die drei Zeilen

              DigitGrouping = DigitGrouping.toString().replace('.', 'x');
              DigitGrouping = DigitGrouping.toString().replace(',', '.');
              DigitGrouping = DigitGrouping.toString().replace('x', ',');
              

              löschen :grin:

              PamfP 1 Antwort Letzte Antwort
              1
              • O obakuhl

                @pamf In der Tat wird das nicht berücksichtigt. Du kannst folgendes Skript statt dem bestehenden probieren:

                DigitGrouping = Intl.NumberFormat('de-DE').format(DigitGrouping);
                
                DigitGrouping = DigitGrouping.toString().replace('.', 'x');
                DigitGrouping = DigitGrouping.toString().replace(',', '.');
                DigitGrouping = DigitGrouping.toString().replace('x', ',');
                
                return DigitGrouping;
                

                Folgendes wird gemacht: Der Variable DigitGrouping wurde eine Zahl zugewiesen. Diese wird in das de-DE Format gebracht. Bei mir führt dies aber noch nicht zum gewünschten Format (obwohl in den ioBrokerEinstellungen "Float Teiler Zeichen" auf Komma steht. So wird z.B. nur mit der ersten Zeile im Skript aus 1234.45 -> 1,234.45. Mit der Funktion 'toString' in den Zeilen 2, 3, 4 werden die ',' und '.' ausgetauscht. So wird aus 1234.45 -> 1.234,45. Falls bei dir jetzt doch mit dem ganzen Skript aus 1234.45 -> 1,234.45 werden sollte dann musst du die drei Zeilen

                DigitGrouping = DigitGrouping.toString().replace('.', 'x');
                DigitGrouping = DigitGrouping.toString().replace(',', '.');
                DigitGrouping = DigitGrouping.toString().replace('x', ',');
                

                löschen :grin:

                PamfP Offline
                PamfP Offline
                Pamf
                schrieb am zuletzt editiert von
                #7

                @obakuhl Danke vor allem für die Erklärung!

                Leider klappt es bei mir noch nicht.

                Zahl: 1234.56 = 1.234,56 (check)
                Zahl 1234.567 = 1.234,567 (check)
                Zahl 123456 = 123.456 (check)
                Zahl 1234567 = 1.234,567 falsch
                Zahl -1234.56 = -1.234,56 (check)

                Alle Zahlen ab 7 Stellen werden falsch ausgegeben, sowohl positive als auch negative.

                Hast Du hierzu noch einen Tipp?

                1 Antwort Letzte Antwort
                0
                • Hant0rH Offline
                  Hant0rH Offline
                  Hant0r
                  schrieb am zuletzt editiert von
                  #8

                  Vielen lieben Dank, der Artikel hat mir sehr weitergeholfen :)

                  Im Endeffekt reichte mir eine Javafunktion mit dem Code:

                  DigitGrouping = Intl.NumberFormat('de-DE').format(DigitGrouping);
                  return DigitGrouping;
                  
                  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

                  478

                  Online

                  32.6k

                  Benutzer

                  81.9k

                  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