Flex large number format

 public static function seperateFormat(num:String, precision:int):String
		{
			if (!isNaN(Number(num))&&precision>=-1)
			{
				var input:BigDecimal = new BigDecimal(num);
				var output:String;
				if (precision != -1)
				{
					output = input.divideScaleRound(new BigDecimal(1), precision, MathContext.ROUND_HALF_EVEN).toString();
				}
				else
				{
					output = input.divide(new BigDecimal(1)).toString();
				}
				var temp:Array = output.split(".");
				var interger:String = temp[0];
				var decimal:String = temp[1];
				var sign:String = "";
				if (interger.substr(0, 1) == "-")
				{
					sign = "-";
					interger = interger.substring(1, interger.length);
				}
				var result:String = "";
				var maxLoop:int = Math.ceil(interger.length / 3);
				for (var i:int = maxLoop; i >= 1; i--)
				{
					var tempInterger:String;
					if (i == maxLoop)
					{
						tempInterger = Number(interger.substring(0, interger.length - 3 * (i - 1))).toString();
					}
					else
					{
						tempInterger = interger.substring(interger.length - 3 * i, interger.length - 3 * (i - 1));
					}
					result = result + "," + tempInterger;
				}
				if (result.substring(0, 1) == ",")
				{
					result = result.substring(1, result.length);
				}
				result = sign+result;
				if (decimal == null)
				{
					return result.substring(0, result.length);
				} 
				return result.substring(0, result.length) + '.' + decimal;
			}
			return num;
		}

Flex当需要对一个很长的number进行NumberFormatter时 , 我发现flex的Number不像BigDecimal一样具有很大的精度,当超过15位时,用NumberFormatter后就会使原number丢失精度,这里使用了BigDecimal和MathContext两个外部类。可从

http://code.google.com/p/bigdecimal/  这里获得经过多方修整,这个版本是测试以来最好的版本了。

 

例子:

seperateFormat("123123123123.773" , 3);

result:   123,123,123,123.773
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值