Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Kommazahl 0 anhängen

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    Kommazahl 0 anhängen

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

      Hallo Ihr,

      ich lese eine Temperatur aus und erhalte diesen Wert ohne Kommazahl.
      Wie kann ich bei diesem Wert eine Null anhängen?
      Heißt, bei 23 -> 23.0

      let testzahl = 23;
      let x = testzahl.toFixed(2); 
      let y = parseFloat(x.replace(',','.'));
          
      console.log('testzahl string ' + x);
      console.log('testzahl number ' + y);
      
      

      Als Log:

      testzahl string 23.00
      testzahl number 23
      

      Leider funktioniert das nicht, wo liegt hier mein Fehler?

      1 Reply Last reply Reply Quote 0
      • arteck
        arteck Developer Most Active last edited by arteck

        @malaus das eine ist ein string.. das andere ein number
        und das ist abhängig von der angegebenen Landesfprmatierung

        https://linuxhint.com/add-commas-number-javascript/

        mit parseFloat machst du aus dem x String ein number ..

        M 1 Reply Last reply Reply Quote 0
        • M
          Malaus @arteck last edited by

          @arteck meine Idee war, dass ich die erhaltene Number mit toFixed() in ein String umwandle und zwei Kommastellen hinzufüge. Danach das ganze wieder zurück zu Number. Aber leider werden hier die neu hinzugefügte Kommastellen nicht mitgenommen.

          In deinem Beispiel werden größere Zahlen als Kommazahlen umgewandelt.
          Ich habe mal folgendes ausprobiert.

          console.log("Example to add comma to number");
          const num = 57484;
          const numFor = Intl.NumberFormat('en-US');
          const new_for = numFor.format(num);
          console.log(new_for)
          

          Leider funktioniert dieses Beispiel nur bei größeren Zahlen. Wenn die Zahl 23 ist, erhalte ich als Ergebnis 23.
          Gebe ich 2300 ein, erhalte ich als Ergebnis 2,300

          mickym F Codierknecht 4 Replies Last reply Reply Quote 0
          • mickym
            mickym Most Active @Malaus last edited by

            @malaus da in dem JavaScript Adapter auch JSONATA enthalten ist kannst Du über $formatNumber die Zahl in einen String umwandeln und mit picture das Ausgabeformat festlegen.

            http://docs.jsonata.org/numeric-functions

            1 Reply Last reply Reply Quote 0
            • F
              fastfoot @Malaus last edited by

              @malaus

              const fmtDe = Intl.NumberFormat('en-US', {
                  minimumIntegerDigits: 1,
                  minimumFractionDigits: 1,
                  maximumFractionDigits: 3
              });
              let number1 = 23.00001;
              let number2 = 23.12389;
              log(fmtDe.format(number1));
              log(fmtDe.format(number2));
              
              1 Reply Last reply Reply Quote 0
              • Codierknecht
                Codierknecht Developer Most Active @Malaus last edited by

                @malaus sagte in Kommazahl 0 anhängen:

                Aber leider werden hier die neu hinzugefügte Kommastellen nicht mitgenommen

                Ein Trugschluss!
                Die "Kommastellen" sind sehr wohl enthalten. Sie werden ohne weiteres Zutun lediglich nicht dargestellt.
                Für die Darstellung (Vis oder Log) wird die Zahl implizit in einen String konvertiert. Nachkommastellen werden dabei nur dann mit ausgegeben, wenn man das explizit mit angibt.

                @malaus sagte in Kommazahl 0 anhängen:

                Gebe ich 2300 ein, erhalte ich als Ergebnis 2,300

                Auch das ist ein Trugschluss. Das "Komma" ist hier kein Komma, sondern das Tausender-Trennzeichen im angegebenen Länderformat (en-US).
                Wenn Du - wie in D/A/CH üblich - den Punkt als Tausender-Trennzeichen haben möchtest, musst Du das gewünschte Länderformat (de-DE) mit angeben.

                1 Reply Last reply Reply Quote 0
                • mickym
                  mickym Most Active last edited by

                  So ich habs gerade im JS Adapter getestet und JSONATA tut jedenfalls:

                  7857e59c-047c-43ab-b197-6267b5d796c8-image.png

                  console.log(jsonataExpression(23,'$formatNumber($, "0,00",{\'decimal-separator\':\',\'})'));
                  
                  M 1 Reply Last reply Reply Quote 0
                  • M
                    Malaus @mickym last edited by

                    @mickym wenn ich das ausführe, erhalte ich wieder einen String?
                    Wie wäre das, wenn ich das dann in eine Number schreiben möchte?

                    mickym 1 Reply Last reply Reply Quote 0
                    • mickym
                      mickym Most Active @Malaus last edited by

                      @malaus sagte in Kommazahl 0 anhängen:

                      ....meine Idee war, dass ich die erhaltene Number mit toFixed() in ein String umwandle und zwei Kommastellen hinzufüge. Danach das ganze wieder zurück zu Number.

                      Sobald Du etwas wieder in eine Zahl zurückverwandeltst, dann verlierst Du die Formatierung. Intern werden Zahlen nicht mit 0 hinter dem Komma gerechnet und Dezimaltrenner sind nun mal Punkte und kein Komma. Entweder Du wandelst eine Zahl in einen String um, um das darzustellen, aber Du wirst JS nicht dazu bringen Dezimalzahlen mit Komma als Zahlen zu akzeptieren. Deswegen ist das Zurückkonvertieren in Number völlig verkehrt.

                      M 1 Reply Last reply Reply Quote 1
                      • M
                        Malaus @mickym last edited by

                        @mickym danke für diese Info. Dann kann ich das lange probieren.

                        1 Reply Last reply Reply Quote 0
                        • mickym
                          mickym Most Active @Malaus last edited by mickym

                          hat sich überschnitten. 😉

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

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          521
                          Online

                          31.9k
                          Users

                          80.2k
                          Topics

                          1.3m
                          Posts

                          javascript
                          5
                          11
                          431
                          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