Formatear número

Hola quisiera saber si existe alguna función javascript para formatear número (número de decimales, delimitador) como la función php number_format o si existe alguna rutina para hacerlo
Gracias por la ayuda

1 Respuesta

Respuesta
1
Lamentablemente no existe (que yo sepa) una función predeterminada que lo haga, pero sí lo puedes tratar.
Necesitas pasar a una función el número y tratarlo como un string, luego, contar la parte de enteros que tiene el nº para poner los separadores, y listo.
Ejemplo:
<html>
<head>
<script>
function oNumero(numero){
//Propiedades
this.valor = numero || 0
this.dec = -1;
//Métodos
this.formato = numFormat;
this.ponValor = ponValor;
//Definición de los métodos
function ponValor(cad)
{
if (cad =='-' || cad=='+') return
if (cad.length ==0) return
if (cad.indexOf('.') >=0)
this.valor = parseFloat(cad);
else
this.valor = parseInt(cad);
}
function numFormat(dec, miles)
{
var num = this.valor, signo=3, expr;
var cad = ""+this.valor;
var ceros = "", pos, pdec, i;
for (i=0; i < dec; i++)
ceros += '0';
pos = cad.indexOf('.')
if (pos < 0)
cad = cad+"."+ceros;
else
{
pdec = cad.length - pos -1;
if (pdec <= dec)
{
for (i=0; i< (dec-pdec); i++)
cad += '0';
}
else
{
num = num*Math.pow(10, dec);
num = Math.round(num);
num = num/Math.pow(10, dec);
cad = new String(num);
}
}
pos = cad.indexOf('.')
if (pos < 0) pos = cad.lentgh
if (cad.substr(0,1)=='-' || cad.substr(0,1) == '+')
signo = 4;
if (miles && pos > signo)
do{
expr = /([+-]?\d)(\d{3}[\.\,]\d*)/
cad.match(expr)
cad=cad.replace(expr, RegExp.$1+','+RegExp.$2)
}
while (cad.indexOf(',') > signo)
if (dec<0) cad = cad.replace(/\./,'')
return cad;
}
}
//Fin del objeto oNumero:
</script>
</head>
<body>
<script language="Javascript">
var numero = new oNumero(12345678.12);
document.write("El número: " + numero.valor+'<br>');
document.write("Formateado queda: ");
document.write(numero.formato(2, true));
</script>
</body>
</html>

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas