59 lines
2.0 KiB
Plaintext
59 lines
2.0 KiB
Plaintext
dim shared as string*9 lows(0 to 19) = {"", "one", "two", "three", "four",_
|
|
"five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve",_
|
|
"thirteen", "fourteen", "fifteen", "sixteen", "seventeen",_
|
|
"eighteen", "nineteen"}
|
|
dim shared as string*7 tens(0 to 9) = {"", "", "twenty", "thirty", "forty",_
|
|
"fifty", "sixty", "seventy", "eighty", "ninety"}
|
|
dim shared as string*8 lev(0 to 3) = {"", "thousand", "million", "billion"}
|
|
|
|
function numname_int( byval n as integer ) as string
|
|
if n = 0 then return "zero"
|
|
if n < 0 then return "negative " + numname_int( -n )
|
|
dim as integer t = -1, lasttwo, hundreds
|
|
redim as integer triples(0 to 0)
|
|
dim as string ret, tripname
|
|
while n > 0
|
|
t += 1
|
|
triples(t) = n mod 1000
|
|
n \= 1000
|
|
wend
|
|
for i as integer = t to 0 step -1
|
|
tripname = ""
|
|
if triples(i) = 0 then continue for
|
|
lasttwo = triples(i) mod 100
|
|
hundreds = triples(i)\100
|
|
if lasttwo < 20 then
|
|
tripname = lows(lasttwo) + tripname + " "
|
|
else
|
|
tripname = tens(lasttwo\10) + "-" + lows(lasttwo mod 10) + " " + tripname
|
|
end if
|
|
if hundreds > 0 then
|
|
if lasttwo > 0 then tripname = " and " + tripname
|
|
tripname = lows(hundreds)+" hundred" + tripname
|
|
end if
|
|
if i=0 and t>0 and hundreds = 0 then tripname = " and " + tripname
|
|
tripname += lev(i)+" "
|
|
ret = ltrim(ret) + ltrim(tripname)
|
|
next i
|
|
return ltrim(rtrim(ret))
|
|
end function
|
|
|
|
function numname( n as double ) as string
|
|
if n=int(n) then return numname_int(int(n))
|
|
dim as string prefix = numname_int( int(abs(n)) )+" point "
|
|
dim as string decdig = str(abs(n)-int(abs(n))), ret
|
|
if n < 0 then prefix = "negative "+prefix
|
|
ret = prefix
|
|
for i as uinteger = 3 to len(decdig)
|
|
ret = ret + numname(val(mid(decdig,i,1)))+" "
|
|
next i
|
|
return ltrim(rtrim(ret))
|
|
end function
|
|
|
|
print numname(0)
|
|
print numname(1.0)
|
|
print numname(-1.7)
|
|
print numname(910000)
|
|
print numname(987654)
|
|
print numname(100000017)
|