2016-07-29 29 views
-3

Ich versuche, eine Zahl mit zwei Dezimalstellen zu drucken, und ich brauche es mit Punkten als Tausendertrennzeichen.Wie forma Zahl mit Javascript (in einer Weise, die in Safari funktioniert)

Ich kann nicht .toLocaleString() verwenden, da es nicht in Safari funktioniert ...

Hier ist mein Code:

var currentTime; 

    if (localStorage['time']) { 
     currentTime = Number.parseFloat(localStorage['time']); 
    } 
    else { 
     currentTime = 0; 
    } 

    var container = document.getElementById('count'); 

    setInterval(function() { 
     currentTime += .01; 
     container.innerHTML = currentTime.toFixed(2); 
     //container.innerHTML = currentTime.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}); 
     localStorage['time'] = currentTime; 
    }, 100); 
+0

Es gibt eine eingehende Antwort auf diese häufig gestellte Frage hier http://stackoverflow.com/a/149099/280842 – Filype

+0

Mögliche Duplikate von [Wie kann ich Zahlen als Geld in JavaScript formatieren?] (http://stackoverflow.com/questions/149055/how-can-i-format-numbers-as-money-in-javascript) – jmoerdyk

Antwort

0

Sie können diese Schnipsel verwenden, die in den meisten Fällen funktioniert:

// source: http://stackoverflow.com/a/149099/280842 
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) : ""); 
}; 

Verwendung als:

(123456789.12345).formatMoney(2, '.', ','); 

Beispiel: https://jsbin.com/nuyinatuju/edit?js,console