Entradas con la etiqueta ‘millar’

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.