Forum: Ruby convert number to english word

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
2d8b8b3782611eae032f194a900db4ef?d=identicon&s=25 Vetrivel Vaithilingam (vetrivel)
on 2009-03-31 18:26
How to convert number to word.
Ex
       8
eight
           555
five  hundered and fiftyfive
4299e35bacef054df40583da2d51edea?d=identicon&s=25 James Gray (bbazzarrakk)
on 2009-03-31 18:30
(Received via mailing list)
On Mar 31, 2009, at 11:26 AM, Vetrivel Vetrivel wrote:

> How to convert number to word.
> Ex
>       8
> eight
>           555
> five  hundered and fiftyfive

Check the solutions to this old Ruby Quiz:

http://rubyquiz.com/quiz25.html

James Edward Gray II
2d8b8b3782611eae032f194a900db4ef?d=identicon&s=25 Vetrivel Vaithilingam (vetrivel)
on 2009-03-31 18:39
James Gray wrote:
> On Mar 31, 2009, at 11:26 AM, Vetrivel Vetrivel wrote:
>
>> How to convert number to word.
>> Ex
>>       8
>> eight
>>           555
>> five  hundered and fiftyfive
>
> Check the solutions to this old Ruby Quiz:
>
> http://rubyquiz.com/quiz25.html
>
> James Edward Gray II


I need Ruby Module  to use this...
9b3d14efbedc70a652b441b2ec6b871b?d=identicon&s=25 Loga Ganesan (loganathan1)
on 2009-04-04 15:07
Vetrivel Vetrivel wrote:
> James Gray wrote:
>> On Mar 31, 2009, at 11:26 AM, Vetrivel Vetrivel wrote:
>>
>>> How to convert number to word.
>>> Ex
>>>       8
>>> eight
>>>           555
>>> five  hundered and fiftyfive
>>
>> Check the solutions to this old Ruby Quiz:
>>
>> http://rubyquiz.com/quiz25.html
>>
>> James Edward Gray II
>
>
> I need Ruby Module  to use this...

Refer this URL:
         http://refactormycode.com/codes/628-displaying-num...

 There is a module called linguistics in ruby to do that.
45196398e9685000d195ec626d477f0e?d=identicon&s=25 Thomas Sawyer (7rans)
on 2009-04-04 17:20
(Received via mailing list)
On Mar 31, 12:26 pm, Vetrivel Vetrivel <vetrivel.bk...@gmail.com>
wrote:
> How to convert number to word.
> Ex
>        8
> eight
>            555
> five  hundered and fiftyfive

Check out the <a href="http://english.rubygorge.org">English</a> gem
too.

T.
52c062635cf480b798c5ba8e18ee5be3?d=identicon&s=25 Nobuhiro IMAI (Guest)
on 2009-04-04 17:58
(Received via mailing list)
Hello,

On Wed, Apr 1, 2009 at 1:26 AM, Vetrivel Vetrivel
<vetrivel.bksys@gmail.com> wrote:
>
> How to convert number to word.
> Ex
>       8
> eight
>           555
> five  hundered and fiftyfive

Integer#to_alphabetic from
http://github.com/technohippy/ordinal-accessors-fo...
sounds nice for me :).
Da22709962fc0cf31068e779c78ab6be?d=identicon&s=25 Raveendran .P (jazzezravi)
on 2009-04-06 08:31
Hi  Vetrivel,

try this ..


class Fixnum

 def english_word
  @h = {0=>"zero", 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",20=>"Twenty",30=>"Thirty",40=>"Fourty",50=>"Fifty",60=>"Sixty",70=>"Seventy",80=>"Eighty",90=>"Ninty"}
  @i=0
  @array=[]
  @result=""
  if self > 99
    str_num=self.to_s #@num.to_s
    str_num_len=str_num.length
    str_full_num=str_num.insert(0,"0"*(11-str_num_len))
    str_full_num=str_num.insert(8,"0")
    str_full_num.scan(/../) { |x|  @array<<x }
    6.times do
    self.def_calc
    @i+=1
    end
  else
     if self > 9
        puts
(self.proc_double_dig((self/10)*10))+(self.proc_single_dig(self%10))
     else
       if self > 0
       puts self.proc_single_dig(self)
       else
        return "AMOUNT NOT KNOWN or NILL"
       end
     end
  end
  end


  def def_calc
    case @i
      when 0
        str=self.proc_unit(@array[@i])
        if (str.scan(/\w+/)).length!=0
             then str=str+ "hundred & "
              @result=@result+str
        end
      when 1
        str=self.proc_unit(@array[@i])
        if (str.scan(/\w+/)).length!=0
             then str=str+ " Crore, "
             @result=@result+str
        end
      when 2
        str=self.proc_unit(@array[@i])
        if (str.scan(/\w+/)).length!=0
             then str=str+ " Lakh, "
             @result=@result+str
        end
      when 3
        str=self.proc_unit(@array[@i])
        if (str.scan(/\w+/)).length!=0
             then str=str+ " Thousand, "
             @result=@result+str
        end
      when 4
        str=self.proc_unit(@array[@i])
        if (str.scan(/\w+/)).length!=0
             then str=str+ " Hundred, "
             @result=@result+str
        end
      when 5
        str=self.proc_unit(@array[@i])
        if (str.scan(/\w+/)).length!=0
             then str=str+ ". "
             @result=@result+str
        end
        print @result.sub(/..$/,"")
    else
   end
  end

  def proc_unit(x)
    if x.to_i>0
      if x.to_i<=10
        return self.proc_single_dig(x.to_i)
      else
        if x.to_i<=20
        return self.proc_double_dig(x.to_i)
        else
        return
(self.proc_double_dig((x.to_i/10)*10))+(self.proc_single_dig(x.to_i%10))
        end
     end
    end
  return ""
  end

  def proc_double_dig(z)
    if z==0
      return ""
    else
      return @h[z]
    end
 end

  def proc_single_dig(y)
    if y==0
      return ""
    else
      return @h[y]
    end
  end
protected :def_calc, :proc_unit, :proc_double_dig,   :proc_single_dig

end


puts 453645445.english_word

#FourtyFive Crore, Thirtysix Lakh, FourtyFive Thousand, Four Hundred,
FourtyFive


Regards,
P.Raveendran
Da22709962fc0cf31068e779c78ab6be?d=identicon&s=25 Raveendran .P (jazzezravi)
on 2009-04-06 08:35
Hi vetri,

The above code works only upto billions.


Regards,
P.raveendran
http://raveendran.wordpress.com
This topic is locked and can not be replied to.