Skip to content

Instantly share code, notes, and snippets.

@kmandreza
Forked from michaelrkn/in_words_ultimate.rb
Created June 19, 2012 21:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kmandreza/2956768 to your computer and use it in GitHub Desktop.
Save kmandreza/2956768 to your computer and use it in GitHub Desktop.
numbers in words ultimate edition
class Integer
def in_words
if self < 20
{0 => "\b", 1 => "one", 2 => "two", 3 => "three", 4 => "four", 5 => "five", 6 => "six", 7 => "seven", 8 => "eight", 9 => "nine", 10 => "ten", 11 => "eleven", 12 => "twelve", 13 => "thirteen", 14 => "fourteen", 15 => "fifteen", 16 => "sixteen", 17 => "seventeen", 18 => "eighteen", 19 => "nineteen"}[self]
elsif self < 100
"#{{20 => "twenty", 30 => "thirty", 40 => "forty", 50 => "fifty", 60 => "sixty", 70 => "seventy", 80 => "eighty", 90 => "ninety"}[self - (self % 10)]} #{(self % 10).in_words}"
elsif self < 1_000
"#{(self / 100).in_words} hundred #{(self % 100).in_words}"
else
{10 ** 12 => "trillion", 10 ** 9 => "billion", 10 ** 6 => "million", 10 ** 3 => "thousand"}.each do |number, word|
return "#{(self / number).in_words} #{word} #{(self % number).in_words}" if (self / number) >= 1 && (self / number) < 1_000
end
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment