Barney Posted April 24, 2008 Share Posted April 24, 2008 expandcollapse popup<% ss = "one,two,three,four,five,six,seven,eight,nine" ds = "ten,eleven,twelve,thirteen,fourteen,fifteen,sixteen," & _ "seventeen,eighteen,nineteen" ts = "twenty,thirty,forty,fifty,sixty,seventy,eighty,ninety" qs = ",thousand,million,billion" Function nnn2words(iNum) a = split(ss,",") i = iNum mod 10 if i > 0 then s = a(i-1) ii = int(iNum mod 100)\10 if ii = 1 then s = split(ds,",")(i) elseif ((ii>1) and (ii<10)) then s = split(ts,",")(ii-2) & " " & s end if i = (iNum \ 100) mod 10 if i > 0 then s = a(i-1) & " hundred " & s nnn2words = s End Function Function num2words(iNum) i = iNum if i < 0 then b = true: i = i*-1 if i = 0 then s="zero" elseif i <= 2147483647 then a = split(qs,",") for j = 0 to 3 iii = i mod 1000 i = i \ 1000 if iii > 0 then s = nnn2words(iii) & _ " " & a(j) & " " & s next else s = "out of range value" end if if b then s = "negative " & s num2words = trim(s) End Function I tried but it didn't work ... expandcollapse popup$ss = "one,two,three,four,five,six,seven,eight,nine" $ds = "ten,eleven,twelve,thirteen,fourteen,fifteen,sixteen,seventeen,eighteen,nineteen" $ts = "twenty,thirty,forty,fifty,sixty,seventy,eighty,ninety" $qs = ",thousand,million,billion" Func nnn2words($iNum) $a = StringSplit($ss, ",") $i = Mod($iNum, 10) If $i > 0 Then $s = $a($i - 1) EndIf $ii = int(Mod($iNum, 100)) / 10 If $ii = 1 Then $s = StringSplit($ds, ",")($i) ElseIf (($ii > 1) And ($ii < 10)) Then $s = StringSplit($ts, ",")($ii - 2) & " " & $s EndIf $i = Mod(($iNum / 100), 10) If $i > 0 Then $s = $a($i - 1) & " hundred " & $s $nnn2words = $s EndFunc Func num2words($iNum) $i = $iNum If $i < 0 Then $b = True $i = $i * -1 EndIf If $i = 0 Then $s = "zero" ElseIf $i <= 2147483647 Then $a = StringSplit($qs, ",") For $j = 0 to 3 $iii = Mod($i, 1000) $i = $i / 1000 If $iii > 0 Then $s = nnn2words($iii) & " " & $a($j) & " " & $s Next Else $s = "out of range value" EndIf If $b Then $s = "negative " & $s num2words = StringTrimLeft($s) EndFunc Thanks for your help! Link to comment Share on other sites More sharing options...
smashly Posted April 24, 2008 Share Posted April 24, 2008 (edited) Hi, just for kicks here's from 0 to 99.. Didn't have enough time to add the rest or refine it..Dim $ones[10] = ["zero","one","two","three","four","five","six","seven","eight","nine"] Dim $twos[10] = ["ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen"] Dim $tys[10] = ["nul","nul","twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety"] ConsoleWrite(Number2word(99) & @LF) Func Number2word($iNum) $len = StringLen($iNum) Switch $len Case 1 For $i = 0 To 9 If $iNum = $i Then Return $ones[$i] Next Case 2 If StringLeft($iNum, 1) = 1 Then For $i = 0 To 9 If StringRight($iNum, 1) = $i Then Return $twos[$i] Next ElseIf StringLeft($iNum, 1) > 1 Then Local $nTmp For $i = 2 To 9 If StringLeft($iNum, 1) = $i Then $nTmp = $tys[$i] Next For $i = 1 To 9 If StringRight($iNum, 1) = $i Then $nTmp &= " " & $ones[$i] Next Return $nTmp EndIf Case Else Return "Error: Only supports from 0 - 99" EndSwitch EndFunc I'm away from home for the next 4 days , so I'll have a play with it in my spare time at work. Cheers Edited April 24, 2008 by smashly Link to comment Share on other sites More sharing options...
smashly Posted April 24, 2008 Share Posted April 24, 2008 Hi, just added a touch more, now does from 0 To 999expandcollapse popupDim $ones[10] = ["zero","one","two","three","four","five","six","seven","eight","nine"] Dim $twos[10] = ["ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen"] Dim $tys[10] = ["nul","nul","twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety"] ConsoleWrite(Number2word(999) & @LF) Func Number2word($iNum) $len = StringLen($iNum) Switch $len Case 1 For $i = 0 To 9 If $iNum = $i Then Return $ones[$i] Next Case 2 If StringLeft($iNum, 1) = 0 Then Return Number2word(StringTrimLeft($iNum, 1)) If StringLeft($iNum, 1) = 1 Then For $i = 0 To 9 If StringRight($iNum, 1) = $i Then Return $twos[$i] Next ElseIf StringLeft($iNum, 1) > 1 Then Local $nTmp For $i = 2 To 9 If StringLeft($iNum, 1) = $i Then $nTmp = $tys[$i] Next For $i = 1 To 9 If StringRight($iNum, 1) = $i Then $nTmp &= " " & $ones[$i] Next Return $nTmp EndIf Case 3 Local $nTmp = Number2word(StringTrimLeft($iNum, 1)) If $nTmp = "Zero" Then $nTmp = "" Else $nTmp = " and " & $nTmp EndIf For $i = 1 To 9 If StringLeft($iNum, 1) = $i Then Return $ones[$i] & " hundred" & $nTmp Next Case Else Return "Error: Only supports from 0 - 999" EndSwitch EndFunc Cheers Link to comment Share on other sites More sharing options...
Barney Posted April 24, 2008 Author Share Posted April 24, 2008 Hi, just added a touch more, now does from 0 To 999expandcollapse popupDim $ones[10] = ["zero","one","two","three","four","five","six","seven","eight","nine"] Dim $twos[10] = ["ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen"] Dim $tys[10] = ["nul","nul","twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety"] ConsoleWrite(Number2word(999) & @LF) Func Number2word($iNum) $len = StringLen($iNum) Switch $len Case 1 For $i = 0 To 9 If $iNum = $i Then Return $ones[$i] Next Case 2 If StringLeft($iNum, 1) = 0 Then Return Number2word(StringTrimLeft($iNum, 1)) If StringLeft($iNum, 1) = 1 Then For $i = 0 To 9 If StringRight($iNum, 1) = $i Then Return $twos[$i] Next ElseIf StringLeft($iNum, 1) > 1 Then Local $nTmp For $i = 2 To 9 If StringLeft($iNum, 1) = $i Then $nTmp = $tys[$i] Next For $i = 1 To 9 If StringRight($iNum, 1) = $i Then $nTmp &= " " & $ones[$i] Next Return $nTmp EndIf Case 3 Local $nTmp = Number2word(StringTrimLeft($iNum, 1)) If $nTmp = "Zero" Then $nTmp = "" Else $nTmp = " and " & $nTmp EndIf For $i = 1 To 9 If StringLeft($iNum, 1) = $i Then Return $ones[$i] & " hundred" & $nTmp Next Case Else Return "Error: Only supports from 0 - 999" EndSwitch EndFunc Cheers Hi smashly, Thanks for your help Long long time didn't write any programs and I am new to AutoIt too. Many things to learn Link to comment Share on other sites More sharing options...
weaponx Posted April 24, 2008 Share Posted April 24, 2008 There is an old topic about this:http://www.autoitscript.com/forum/index.ph...ousand++million Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now