Acknowledgments: I owe a lot to many posts in STACKOVERFLOW for this
Esp. Number formatting in java to use Lakh format instead of million format
In new Flex AIR application 1 good innovation I did RIGHT ALIGN + Indian comma separation
This is done by custom item rendering; need a lot of search and code effort
Adapted from Java but Java, C# & AS3 so similar it is a cakewalk porting
Outside of India nobody likes lakhs and crores; others happy with million billion
BUT we Indians think lakhs and dream crores; and find million(10 lakh) thora confushingh
Enroute I also did RIGHT ALIGN a very common need
Flex Markup
<s:GridColumn id="dmbtr" headerText="Amt (INR)" dataField="dmbtr" >
<s:itemRenderer>
<fx:Component>
<s:GridItemRenderer>
<s:Label id="MyText" top="9" left="7" alpha="1"
text="{leftPad(data.dmbtr,10)}"
fontFamily="Lucida Console" textAlign="right"/>
</s:GridItemRenderer>
</fx:Component>
</s:itemRenderer>
</s:GridColumn>
AS3 Function
public function leftPad(inp:Number,size:int):String {
var lstr:String=Math.round(inp).toString();
// LAKHS CRORES Indian Style
var pat3:RegExp = /(\d+)(\d{3})$/;
lstr = lstr.replace(pat3, "$1,$2");
var pat2:RegExp = /(\d+)(\d{2},.+)/;
var pat1:RegExp = /\d{3,},.+/;
while(lstr.match(pat1))
lstr = lstr.replace(pat2, "$1,$2");
// RIGHT ALIGN part
var strLen:int = lstr.length;
var padLen:int = size - strLen;
if (padLen <= 0)
return lstr;
var myspaces:String=" "; // 20 OK
return myspaces.substring(0,padLen)+lstr;
}
The trick is to left pad and use fixed width font
My requirement was nearest rupee
If you need decimals(paise for INR) use toFixed method of Number
and change pat3 as
var pat3:RegExp = /(\d+)(\d{3}.*)$/;
The right align part is after the Indian commas