DEV Community

James Moberg
James Moberg

Posted on

Convert Numbers to Text using ColdFusion and ICU4J

(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")
123 = "one hundred twenty-three"
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"
Enter fullscreen mode Exit fullscreen mode

Here's the CFML source code:
https://gist.github.com/JamoCA/cd343524e417f382d5c706954e52dfaf

Top comments (0)