Cem: zahl formatiert ausgeben 100.000,12

Hallo, ich habe hier im Forum schon einiges gefunden, unter anderem auch die Informationen zu meiner Rechnung hier.

Jetzt versuche ich das Ergebnis formatiert wieder auszugeben.

function calculate() {
let summe_1 = 	getInputAsFloat(document.form1.input1) *
					getInputAsFloat(document.form1.input2);

document.getElementById("output_1").textContent = summe_1.toString().replace(/\./ , ",");				 
}

Jetzt kommt die Zahl je nach Art entweder als 100000 oder als 100000,54 als Ausgabe, je nachdem ob ich eine Komma Zahl eingegeben habe oder nicht.

Ich möchte aber die Ausgabe so formatiert haben 100.000,54, wie bei PHP da gibt es ja das number_format

  1. Mahlzeit,

    ich habe hier im Forum schon einiges gefunden, unter anderem auch die Informationen zu meiner Rechnung hier.

    dann hast du bestimmt auch schon diesen Thread gefunden, der genau dein Problem beackert.

    Ich möchte aber die Ausgabe so formatiert haben
    100.000,54, wie bei PHP da gibt es ja das number_format

    Bedenke, dass deine Besucher vielleicht ganz andere Zahlendarstellungen gewöhnt sind.

    Live long and pros healthy,
     Martin

    --
    Home is where my beer is.
    1. Nein, aber die Antwort währe theoretisch

      
      var number = 3500;
      
      console.log(number.toLocaleString()); // Displays "3,500" if in U.S. English locale
      

      aber wie bekomme ich die beiden Formeln vereint

      
      document.getElementById("output_1").textContent = summe_1.toString().replace(/\./ , ",");			
      

      Ich denke das bleibt:

      document.getElementById("output_1").textContent = 
      

      und ich muss irgendwie

      
      console.log(number.toLocaleString()); // Displays "3,500" if in U.S. English locale
      

      übergeben

      1. Hallo Cem,

        eine feste Anzahl von Nachkommastellen bekommst Du über den options-Parameter von toLocaleString.

        Also so:

        elem.textContent = zahl.toLocaleString(
                             undefined, 
                             { minimumFractionDigits: 2, 
                               maximumFractionDigits: 2, 
                               useGrouping: true} );
        

        Das gibt dann genau 2 Nachkommastellen, und Tausendergruppierung gemäß Locale.

        undefined als 1. Parameter bedeutet: Verwende das Locale des Anwenders.

        Alternativ kannst Du Dir ein Formatierungsobjekt erzeugen, wenn Du viel zu formatieren hast:

        const formatter = new Intl.NumberFormat(
                             undefined, 
                             { minimumFractionDigits: 2, 
                               maximumFractionDigits: 2,
                               useGrouping: true});
        
        elem.textContent = formatter.format(zahl);
        

        Rolf

        --
        sumpsi - posui - obstruxi
        1. Super, genial, wie bekomme ich den noch das € Zeichen dazu?

          elem.textContent = zahl.toLocaleString(
                               undefined, 
                               { minimumFractionDigits: 2, 
                                 maximumFractionDigits: 2, 
                                 useGrouping: true} );
          
          1. Hallo Cem,

            achso, Ausgabe als Währung. Sorry.

            Da nimmst Du als Option-Objekt { style: "currency", currency: "EUR" }. Grouping und FractionDigits brauchst Du in dem Fall nicht, das setzt er dann automatisch auf 2 Nachkommastellen.

            Guckst Du hier

            Die Wikipedia sagt: Laut DIN 5008 sollten hier die Tausendergruppen mit Punkten und NICHT mit Leerstellen gegliedert werden. Vermutlich, damit nicht irgendwer unbemerkt eine Ziffer dazwischendruckt. JavaScript macht also alles richtig :)

            Rolf

            --
            sumpsi - posui - obstruxi
            1. Da sag ich einfach mal Danke