Formatear números con JavaScript

Seguramente ya te encontraste en la necesidad de ponerle formato a los números separadores de miles por ejemplo, si ese es tu problema en este momento. Entonces te digo que estas en el lugar correcto, pues acá les dejo una Función para dar formato a números en Javascript, en otro artículo ya les he mostrado cómo hacer esto en Java, si quieres saber te invito a que visites el post Puntos decimales y separador de miles en Java.

Bueno esta función JavaScript lo que hace es ponerle los puntos separadores de miles y los puntos decimales a un número dado. La función es la siguiente…

var formatNumber = {
 separador: ".", // separador para los miles
 sepDecimal: ',', // separador para los decimales
 formatear:function (num){
 num +='';
 var splitStr = num.split('.');
 var splitLeft = splitStr[0];
 var splitRight = splitStr.length > 1 ? this.sepDecimal + splitStr[1] : '';
 var regx = /(\d+)(\d{3})/;
 while (regx.test(splitLeft)) {
 splitLeft = splitLeft.replace(regx, '$1' + this.separador + '$2');
 }
 return this.simbol + splitLeft +splitRight;
 },
 new:function(num, simbol){
 this.simbol = simbol ||'';
 return this.formatear(num);
 }
}

La forma de utilizar esta función es bien simples.

formatNumber.new(123456779.18, "$") // retorna "$123.456.779,18"
formatNumber.new(123456779.18) // retorna "123.456.779,18"
formatNumber.new(123456779) // retorna "$123.456.779"

10 comentarios en “Formatear números con JavaScript”

  1. Buenas,

    Funciona perfecto en chrome y en firefox,. pero en IE 8 sale el siguiente error.

    se esperaba un identificador, cadena o numero, precisamente da error en esta linea de código:
    },
    new:function(num, simbol){

    ¿Ha alguien le ha pasado y ha podido solucionarlo?

  2. Dany Ruiz, al parecer el operador «new» está reservado en IE8. Intenta cambiar el nombre de la función «new» por una palabra no reservada. Al parecer IE es más estricto y no es tan intuitivo que Firefox y Chrome.

    Suerte!

  3. En el chrome me estaba marcando un error al tenerla junto con Jquery (por otras funciones que tengo) si a alguien le pasa aqui dejo el ajuste (solo cambien el > por > y por cuestioner regionales el separador de miles lo puse en «,»)

    //Funcion que formatea el numero para mostrarlo con separador de miles.
    var formatNumber = {
    separador: «,», // separador para los miles
    sepDecimal: ‘.’, // separador para los decimales
    formatear:function (num){
    num +=»;
    var splitStr = num.split(‘.’);
    var splitLeft = splitStr[0];
    var splitRight = splitStr.length > 1 ? this.sepDecimal + splitStr[1] : »;
    var regx = /(\d+)(\d{3})/;
    while (regx.test(splitLeft)) {
    splitLeft = splitLeft.replace(regx, ‘$1’ + this.separador + ‘$2’);
    }
    return this.simbol + splitLeft +splitRight;
    },
    format:function(num, simbol){
    this.simbol = simbol ||»;
    return this.formatear(num);
    }
    }

  4. Hola soy nuevo en esto, quiero colocar un campo de texto y que me devuelva el numero formateado, como hago para llamar la función?

    Tengo este formulario y quiero que al darle al botón enviar me muestre el numero formateado

    Monto:

    Gracias de antemano espero me puedan ayudar

  5. hola,soy nuevo en esto
    estoy intentando utilizar la función en un cuadro de texto , pero no estoy entendiendo como podría llamar a la función.

    si me podrías dar una ayuda por favor

    gracias

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.