Poner Puntos de Millar en un Número
Publicado por Iván Gajate el 29 de julio de 2009 en AS2, AS3, Flash | 15 comentarios »
Hoy me han pedido una función para dar formato a un número poniéndole los puntos de millar. Muy útil cuando se quiere poner precios que vienen de base de datos. Aquí va la función:
function puntoDeMillar(num:Number, separador:String=".", separadorDecimal:String=","):String { // Separo la parte entera de la decimal var entera:String = String(Math.floor(num)); var decimal:String = ""; var partes:Array = String(num).split("."); if (partes.length > 1) { decimal = separadorDecimal + partes[1]; } var cadena:String = ""; // Calculo el numero de bloques de tres digitos que tengo que hacer var bloques:Number = Math.floor(entera.length/3); if (bloques<1) { return entera; } // Pongo un separador (.) entre cada bloque for (var i = 0; i<bloques; i++) { cadena = entera.substr(-3*(i+1), 3)+cadena; if (i<bloques-1) { cadena = separador+cadena; } } // Pongo los primeros digitos a la izquierda del primer punto if (entera.length%3>0) { cadena = entera.substr(0, entera.length%3)+separador+cadena; } return cadena + decimal; }
Para utilizarla
trace(puntoDeMillar(12345678.12)); // Devuelve 12.345.678,12
Por defecto pone un punto cada tres dígitos empezando por la derecha (respeta los decimales). Se puede pasar un segundo parámetro con el separador de miles que se quiera, y un tercero con el separador de decimales, ambos Strings. Sirve tanto para AS2 como AS3.