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

Canales RSS

Lo más fresco

  1. Enlaces sobre desarrollo web Modificado
  2. Cadena aleatoria en PHP Modificado
  3. Recortar texto Nuevo

Sugerencias del chef

Lo más visitado

  1. Canales RSS
  2. Formato condicional según el día de la semana
  3. Enlaces sobre desarrollo web
  4. Recortar texto
  5. Convertir de minutos a horas
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 jueves 13 de agosto de 2026 (14:58:58 +0200) desde https://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.

Lorem ipsum dolor sit amet.

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