JavaScript: formattare i numeri con le virgole decimali

JavaScript non dispone di una funzione analoga a number_format() di PHP, ma necessita di una particolare manipolazione delle stringhe per formattare un numero con le virgole decimali. Vediamo insieme questa tecnica.

La seguente funzione opera su un numero passato come argomento di tipo stringa:


function formatComma(amount) {
	var delimiter = ","; 
	var a = amount.split('.',2)
	var d = a[1];
	var i = parseInt(a[0]);
	if(isNaN(i)) { return ''; }
	var minus = '';
	if(i < 0) { minus = '-'; }
	i = Math.abs(i);
	var n = new String(i);
	var a = [];
	while(n.length > 3) {
		var nn = n.substr(n.length-3);
		a.unshift(nn);
		n = n.substr(0,n.length-3);
	}
	if(n.length > 0) { a.unshift(n); }
	n = a.join(delimiter);
	if(d.length < 1) { amount = n; }
	else { amount = n + '.' + d; }
	amount = minus + amount;
	return amount;
}

Esempio d'uso:


var amount = '2345643.00';
var comma = formatComma(amount);
console.log(comma); // 2,345,643.00
Torna su