2016-05-17 14 views
1

Hy Jungs, Ich habe einen Fall, in dem die Zahl auf genau zwei Dezimalstellen gerundet werden soll. Ich werde ein Beispiel geben und was ich versucht habe.Rundungszahl auf zwei Dezimalstellen

Können sagen, ich 15,07567 habe es aufrunden ich getan habe:

price = Math.round(15.07567 * 100)/100; 

// und ich bekomme 15.08

Aber dies stellt ein Problem, wenn wir Stellen, die wit 0 (Beispiel 15.10) Ende und wir wollen zwei Dezimalstellen.

price = Math.round(15.10 * 100)/100; 

//15.1

Hmmm, also versuchte ich toFixed zu verwenden()

price = Math.round(15.10 * 100)/100; 
total = price.toFixed(2); 

// ich "15.10", das ist gut, aber es gibt einen String und das könnte präsentieren später ein Problem für mich, so habe ich versucht, dieses Problem zu beheben mit:

price = Math.round(15.10 * 100)/100; 
total = price.toFixed(2); 
Number(total) //or parseFloat(total) 

// I 15,1 und um im Kreis komme ich hin?

+0

Wenn es eine Null JS fällt ... müssen Sie eine auswählen. – JordanHendrix

+1

Umm, '15.10 == 15.1', es sei denn, Sie möchten das Ergebnis in einer Zeichenfolge .. – SuperSaiyan

Antwort

0

Wie Jordan sagte. Wenn JavaScript die Nummer anzeigt, wird die 0 gelöscht. Ich würde den Wert einfach so speichern, wie er ist und wenn Sie ihn anzeigen, führen Sie ihn durch .toFixed (2), so dass er korrekt angezeigt wird. Oder noch besser, finden Sie einen Währungsformatierer, da das scheint, was Sie auf der Ansichtsseite anzeigen und verwenden möchten.

Hier ist eine nette Währung formatieren Skript.

Number.prototype.formatMoney = function(c, d='.', t=','){ 
    var n = this, 
    c = isNaN(c = Math.abs(c)) ? 2 : c, 
    d = d == undefined ? "." : d, 
    t = t == undefined ? "," : t, 
    s = n < 0 ? "-" : "", 
    i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "", 
    j = (j = i.length) > 3 ? j % 3 : 0; 
    return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : ""); 
}; 

Dann können Sie es eine objektorientierte Art und Weise mit diesem Code verwenden:

price.formatMoney(2); 

Oder wenn Sie die Tausende und Dezimaltrennzeichen für Europa festlegen möchten.

price.formatMoney(2, ',', '.'); 
+0

Danke Jungs. Ich denke, das ist der richtige Weg. Setzen Sie meinen Wert auf eine Zeichenkette und wenn ich es brauche, zeigen Sie es einfach mit toFixed() an. –

+0

Kein Problem, ich warf auch ein JS-Währungsformatierungsskript ein, das sich um die korrekte Formatierung der gesamten Zahl kümmert. –

0

Wenn Sie die 0 im rechten zeigen möchten, können Sie die Zahl in String darstellen müssen ...

0

immer Ihre Zahlen halten, wenn man sie ihnen durch toFixed laufen angezeigt bekommen eine gewünschte Anzeigeformat, so dass Sie einen Wert in einem String-Format haben. Da die Methode benötigt wird und daher für Anzeigezwecke ausgelegt ist, gibt die Funktion eine Bereit-Zeichenfolge anstelle einer Zahl zurück.