2016-10-20 4 views
1

Ich muss eine Nummer für ein Projekt im arbeiten bei der Arbeit formatieren, nur Problem ist, dass ich es nicht formatieren kann, wie ich will.Javascript: mit toLocaleString + Tofixed

Ich konvertiere die Nummer in eine Localestring mit der toLocaleString Methode, die mir die Kommas gibt, aber ich brauche auch Dezimalstellen, nichts, was ich zu tun scheint funktioniert.

var number = 123.322 
number = parseFloat(number).toFixed(2) //123.22 
number.toLocaleString() //123.22 

Der obige Code gibt nur die parsefloated Nummer zusammen mit den toFixed Dezimalwerte aber nicht fügen die Kommas.

Wie bekomme ich eine Zahl mit zwei Dezimalstellen (wenn der Wert ist "xx.00") und auch Komma getrennt sein. Ist das in JavaScript möglich?

Antwort

0

Number.toLocaleString funktioniert auf eine Zahl, aber toFixed gibt eine Zeichenfolge zurück.

Coerce die Zeichenfolge zurück in eine Anzahl erste

var number = 123.322; 
 
var string = parseFloat(number).toFixed(2); 
 
var parsed = (+string).toLocaleString(); 
 

 
console.log(parsed);

+0

Könnte mir jemand eine kurze Beschreibung des '(+ string)' ive noch nie zuvor gesehen haben, im oberen Bereich der Anfänger mit Javascript bestenfalls. –

+0

Wer entfernt javascript den toFixed-Wert am Ende, wenn es zwei Nullen gibt? https://jsfiddle.net/27rs5bbz/ –

+0

@KenziieeFlavius ​​- Wenn Sie '+" 43 "' es wandelt die Zeichenfolge in eine Zahl, es wäre das gleiche wie 'Number (" 43 ")', und es erzwingt Strings . 'toFixed' entfernt keine abschließenden Nullen, aber' parseFloat'. – adeneo

0

Um Komma zu erhalten Sie die locale .Der locale en enthält Kommas für die Zahlen angeben. toFixed() Returns a string. toLocaleString() Funktion Kommas funktioniert auf eine Zahl, die nicht auf einer Zeichenfolge ist. Analysieren Sie die Zeichenfolge zu float.

var number = 1234567.322; 
number = parseFloat(parseFloat(number).toFixed(2)).toFixed(2) ; 
number=number.toLocaleString('en'); 
+0

Deine letzte Codezeile ist nur eine kurze Frage, würde ich 'number = number.toLocaleString (' de '); 'oder wird' Nummer' zugewiesen, ohne dass das Gleichheitszeichen gesetzt werden muss? –

+0

Es hängt von Ihrer lokalen Clientkonfiguration ab. Wenn Ihr Client bereits auf en eingestellt ist, müssen Sie ihn nicht angeben. En locale gibt Ihnen Kommas. Dinge, die Sie beachten müssen, ist toLocaleString() Funktion erfordert eine Zahl, um Kommas zu erhalten.Sieh dir also meinen letzten editierten Post an. –

+0

Heres der Code in Aktion das gleiche Problem: https://jsfiddle.net/s4df117w/ Aber ich gab es trotzdem –

0

toLocaleString Funktion Zahlendarstellung

auf Sprachen basierend bieten
var number = 3500.00; 

if(Number.isInteger(number)){ 

    var zeroappend= number.toLocaleString()+".00"; 
    console.log(zeroappend);//3,500.00; 


}else{ 
    console.log(number.toLocaleString()); 
} 
+0

Leider beantwortet dies meine Frage nicht –

+0

was ist Ihre erwartete Ausgabe können Sie mir @KenziieeFlavius ​​ – Saravana

+0

Clients will es 3,500.00 einschließlich der 0 anzeigen und alle –

3

Sie können ein Objekt geben, das beschreibt, was Sie .toLocaleString() wollen:

var sNumber = (10123.322).toLocaleString(undefined, 
{'minimumFractionDigits':2,'maximumFractionDigits':2}); 

Dokumentation: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString

Ursprüngliche :

var fNumber = 10123.322; 
var sNumber = parseFloat(fNumber.toFixed(2)).toLocaleString(); 

Die Zahl ist bereits in der ersten Zeile im Dezimal/Float-Format. .toFixed(2) verwandelt es in eine Zeichenfolge mit Festkomma-Notation. parseFloat() nimmt diese Zeichenfolge und macht sie wieder zu einem Float. .toLocaleString() verwandelt es in eine Zeichenfolge im lokalen Format.

Verwandte Themen