Ask Ben: Moving Decimal Places And Formatting Numbers
Posted August 6, 2008 at 8:48 AM by Ben Nadel
Hi Ben, I have been trying to use DecimalFormat and NumberFormat to get some integers coming out of a database query to display as decimals numbers. For Example I want 415 to display as 4.15. I also need 6 to display as .60 How might I accomplish this. I really love your writings by the way.
To do this, all you need to do is move over the decimal place and then format the number. Based on those two numbers, it looks like the number of decimal places is not generic. For 415, you want to move it over twice. For 6, you only move it over once. You'll have to figure out that part of the logic, but once you do, the formatting is quite easy:
- <!--- Set both values so that we can mimic database values. --->
- <cfset intValueA = 415 />
- <cfset intValueB = 6 />
- <!--- Output first number in decimal format. --->
- #DecimalFormat( intValueA / 100 )#<br />
- The second number is slightly more tricky since you did not
- want a leading zero. All of the number formatting options put
- in a leading zero. Therefore, we have to manually remove that
- with some list functionality.
- .#ListLast( DecimalFormat( intValueB / 10 ), "." )#
Once of the beauties of a base-10 number system such as ours is that all you need to do to move decimal places is divide by a power of 10. Each power of 10 moves the decimal place over once. Running the above code we get the following output:
Hope that helps.
If those happen to be dollar figures (or any other currency) that you're trying to format, don't forget about LSCurrencyFormat(number)...
Thanks for the tip; to be honest, my knowledge about internationalization is pretty poor :(
where can i found some informations about the LSCurrencyFormat