Ask Ben: Moving Decimal Places And Formatting Numbers
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:
4.15
.60
Hope that helps.
Want to use code from this post? Check out the license.
Reader Comments
If those happen to be dollar figures (or any other currency) that you're trying to format, don't forget about LSCurrencyFormat(number)...
http://livedocs.adobe.com/coldfusion/8/htmldocs/functions_l_27.html
@Steven,
Thanks for the tip; to be honest, my knowledge about internationalization is pretty poor :(
thanks
where can i found some informations about the LSCurrencyFormat