borrame.com - Colección particular de recortes de código y documentación para programación web

Canales RSS

Lo más fresco

  1. Bookmarklets Nuevo
  2. Recetario básico para CakePHP/2 Nuevo
  3. Certificado auto-firmado Nuevo

Sugerencias del chef

Lo más visitado

  1. Fecha y hora
  2. Dar formato a un número
  3. Reiniciar secuencia
  4. Vaciar un esquema
  5. Certificado auto-firmado
Compartir esta página

Dar formato a un número

O cómo pasar de 3141592.653 a 3.141.592,65. Si no recibe algo que se pueda convertir a número devuelve una cadena vacía.

/** * Da formato a un número para su visualización * * @param {(number|string)} numero Número que se mostrará * @param {number} [decimales=null] Nº de decimales (por defecto, auto); admite valores negativos * @param {string} [separadorDecimal=","] Separador decimal * @param {string} [separadorMiles=""] Separador de miles * @returns {string} Número formateado o cadena vacía si no es un número * * @version 2014-07-18 */ function formatoNumero(numero, decimales, separadorDecimal, separadorMiles) {     var partes, array;     if ( !isFinite(numero) || isNaN(numero = parseFloat(numero)) ) {         return "";     }     if (typeof separadorDecimal==="undefined") {         separadorDecimal = ",";     }     if (typeof separadorMiles==="undefined") {         separadorMiles = "";     }     // Redondeamos     if ( !isNaN(parseInt(decimales)) ) {         if (decimales >= 0) {             numero = numero.toFixed(decimales);         } else {             numero = (                 Math.round(numero / Math.pow(10, Math.abs(decimales))) * Math.pow(10, Math.abs(decimales))             ).toFixed();         }     } else {         numero = numero.toString();     }     // Damos formato     partes = numero.split(".", 2);     array = partes[0].split("");     for (var i=array.length-3; i>0 && array[i-1]!=="-"; i-=3) {         array.splice(i, 0, separadorMiles);     }     numero = array.join("");     if (partes.length>1) {         numero += separadorDecimal + partes[1];     }     return numero; }

Este recorte nació como un émulo de la función number_format() de PHP pero tiene algunas diferencias; principalmente, que los valores por defecto son distintos y que si no recibe un número válido no devuelve cero.

Historial

v2014-07-18
Reescritura completa.
Documentación en formato JSDoc.
Corrección: cuando decimales era mayor que 3 insertaba separadores de miles en la parte decimal (y lo hacía mal).
v2007-08-06
Arreglo de un fallo: no respetaba "" como separador decimal.
v2007-08-05
Primera versión.

Esta página ha sido impresa el sábado 23 de septiembre de 2017 (02:21:55 +0200) desde http://borrame.com/recortes/javascript/formato-numero.html. La última vez que miré contenía HTML válido con CSS fresquito y si tiene flatas de ortografía ha sido sin querer.

borrame.com es el sitio anteriormente conocido como bits.demogracia.com (no confundir con Demogracia, que sólo pasaba por ahí).

© 2005-2017 by Álvaro González (alvaro.es) • Burgos (España) • borrame.com