(This is a repost from my abandoned tumblr blog; dated 2016-11-17)
A client requested that we spell out numbers on their website in order to clarify some financial totals. I initially planned on using the ColdFusion NumberAsString UDF from 2002. After reviewing the results, I thought it was worth a unit test comparison to review the results against ICU4J (java).
In the end, I decided to use ICU4J because:
ICU4J converts text using 180+ locales. Numbers are translated to each language (Chinese, Thai, French, Spanish, etc)
UDF adds title case capitalization to all number strings. (if needed, you can do this separately.)
UDF doesn’t support negative values and will throw a CF error.
UDF doesn’t use hyphenized numbers (“Forty Three” versus “forty-three”)
UDF uses “cardinal-verbose” format w/o hyphened numbers (Adds the word “and” where commas should be.)
UDF decimal places are treated as positive-type number words (instead of using “point four three” for “.43”)
100001 = “one hundred thousand one”
9 = “nine”
64578.25 = “sixty-four thousand five hundred seventy-eight point two five”
0.333 = “zero point three three three”
Here’s the CFML source code:
https://gist.github.com/JamoCA/cd343524e417f382d5c706954e52dfaf