2012-03-16 23 views
7

Duplicar posible:
How to format numbers using javascript?¿Cómo agrego mil separadores a un número en JavaScript?

Quiero añadir un separador de miles, como ., a un número en JavaScript.

1000 -> 1.000 
1000000 -> 1.000.000 

¿Cuál es la forma más elegante de hacer eso?

+0

bastante cosas, pero ninguno realmente no funcionaba, así que pensé que no vale la inserción de ellos aquí. –

+1

Vale la pena al menos mencionarlos. Para que sepamos que lo intentó y falló. Entonces, ¿qué intentaste? :) –

+1

posible duplicado de [¿Cómo formatear números usando javascript?] (Http://stackoverflow.com/questions/5731193/how-to-format-numbers-using-javascript) y [Formatear números en javascript] (http: //stackoverflow.com/questions/1068284/format-numbers-in-javascript). Utilice la búsqueda antes de hacer una nueva pregunta. –

Respuesta

19

No sé acerca elegante ...

function addCommas(n){ 
    var rx= /(\d+)(\d{3})/; 
    return String(n).replace(/^\d+/, function(w){ 
     while(rx.test(w)){ 
      w= w.replace(rx, '$1,$2'); 
     } 
     return w; 
    }); 
} 

addCommas ('123456789456,34');

valor devuelto: (Cadena) 123,456,789,456.34

1

Aquí es una función para añadir comas, que se encuentra aquí: http://www.mredkj.com/javascript/nfbasic.html

function addCommas(nStr) 
{ 
    var sep = ','; 
    nStr += ''; 
    x = nStr.split('.'); 
    x1 = x[0]; 
    x2 = x.length > 1 ? '.' + x[1] : ''; 
    var rgx = /(\d+)(\d{3})/; 
    while (rgx.test(x1)) { 
     x1 = x1.replace(rgx, '$1' + sep + '$2'); 
    } 
    return x1 + x2; 
} 

he modificado un poco su código para agregar var sep = ',';, por lo que puede cambiar su separador fácilmente, dependiendo del idioma.

2

Esta es mi opinión (sólo por diversión):

var num = 1000000; 
var cnt = 0; // temp counter. 
var s = String(num).split(''). 
        reverse(). 
        map(function(v) { 
         if (cnt < 2) { 
          cnt += 1; 
          return v; 
         } else { 
          cnt = 0; 
          return ',' + v; 
         } 
        }). 
        reverse(). 
        join(''); 
// 1,000,000 
5

Pruebe una expresión regular como:

function formatNumber(num) 
{ 
    return ("" + num).replace(/(\d)(?=(\d\d\d)+(?!\d))/g, function($1) { return $1 + "." }); 
} 

alert(formatNumber(100000)); 

Para ser honesto, me pareció here, mientras estaba tratando de resolver tu problema

3

Usted puede utilizar el código siguiente para hacer el trabajo:

(10000000 + "").split('').reverse().map(function (value, i) { 
    return (!(i % 3)) ? "." + value : value; 
}).reverse().join(''); 
Cuestiones relacionadas