Formato Dinero - ActionScript 3 | Phoxer.com
Formato Dinero - ActionScript 3
04/02/2008

Muchas veces me he cruzado con proyectos que requerían formatear números a formato de dinero, por ejemplo 1342.2466 pasarlo a $1,342.24

Veamos cómo se implementa la clase:

import phoxer.Strings.Money;
 
var mny:Money= new Money();
mny.decimales=true;
mny.simbolo="$";
 
//Para numeros no mayores que MAX_VALUE
mny.parseMoney(0.00); //$0.00
mny.parseMoney(1000.45); //$1,000.45
mny.parseMoney(1650.045); //$1,650.04
mny.parseMoney(300000.36536); //$300,000.36
mny.parseMoney(30000056745563354.36536); //$30,000,056,745,563,356.00
mny.parseMoney(.5483); //$0.54
mny.parseMoney(003.5483); //$3.54
mny.parseMoney(-003.5483); //$-3.54
mny.parseMoney(-84030.5483); //$-84,030.54
 
//Para numeros grandes hay un metodo que maneja Strings
mny.parseMoneyByString("12345678901234567890123456"); //$12,345,678,901,234,567,890,123,456.00
mny.parseMoneyByString("-12345678901234567890123456"); //$-12,345,678,901,234,567,890,123,456.00
 
//Para volver a codificarlo a numero
mny.decodeMoney("$1,650.04"); //1650.04
mny.decodeMoney("$-3.54"); //-3.54
mny.decodeMoney("$-8,403"); //-8403


Aca esta la clase completa:

/**
by .:[PHOXER]:.
http://www.phoxer.com
v 1.5; 
*/
package phoxer.Strings{
	public class Money{
		public var simbolo:String="$";
		public var numDiv:String=",";
		public var decDiv:String=".";
		public var decimales:Boolean=true;
 
		public function parseMoney(num:Number):String{
			var sptNum:Array= String(num).split(".");
			return parse(sptNum);
		}
 
		public function parseMoneyByString(num:String):String{
			var sptNum:Array= String(num).split(".");
			return parse(sptNum);
		}
 
		private function parse(sptNum:Array):String{
			sptNum[0]=(sptNum[0]==undefined)? "0":sptNum[0];
			if(decimales){
				sptNum[1]=(sptNum[1]==undefined)? String(decDiv+"00"):String(decDiv+sptNum[1]).substr(0,3);
			}else{
				sptNum[1]="";
			}
			var result:String="";
 
			if(sptNum[0]!="0"){
				var numArray:Array=String(sptNum[0]).split("");
				numArray.reverse();
				var preNum:Array= new Array();
				var i:int=0;
				for each(var a:String in numArray){
					if(i<3 || a=="-"){
						preNum.push(a);
					}else{
						preNum.push(numDiv);
						preNum.push(a);
						i=0;
					}
					i++
				}
				preNum.reverse();
				var numero:String="";
				for each(var b:String in preNum){
					numero+=b;
				}
				result=numero+sptNum[1];
			}else{
				result=sptNum[0]+sptNum[1];
			}
			return simbolo+result;
		}
 
		public function decodeMoney(num:String):Number{
			var preNum:String=String(num.split(numDiv).join("")).split(simbolo).join("");
			return Number(preNum);
		}
	}
}

Clase Money Ejemplo: