BBS: Inland Empire Archive Date: 03-13-93 (02:11) Number: 384 From: TOM COAKLEY Refer#: NONE To: ALL Recvd: NO Subj: Number to a string Conf: (2) Quik_Bas
I saw an earlier post where someone requested some quick basic code that would convert a number (123.15) to a string (One Hundred Twenty Three 15/100) I pulled the following code from a one of my programs. ======================================================================== SUB NUMWORD (NUM#, WORD$) DIM ONEARRAY$(9) DIM NUMARRAY$(9) DIM TEENARRAY$(9) ONEARRAY$(1) = "One " ONEARRAY$(2) = "Two " ONEARRAY$(3) = "Three " ONEARRAY$(4) = "Four " ONEARRAY$(5) = "Five " ONEARRAY$(6) = "Six " ONEARRAY$(7) = "Seven " ONEARRAY$(8) = "Eight " ONEARRAY$(9) = "Nine " NUMARRAY$(1) = "TEEN LISTING" NUMARRAY$(2) = "Twenty " NUMARRAY$(3) = "Thirty " NUMARRAY$(4) = "Forty " NUMARRAY$(5) = "Fifty " NUMARRAY$(6) = "Sixty " NUMARRAY$(7) = "Seventy " NUMARRAY$(8) = "Eighty " NUMARRAY$(9) = "Ninety " TEENARRAY$(1) = "Eleven " TEENARRAY$(2) = "Twelve " TEENARRAY$(3) = "Thirteen " TEENARRAY$(4) = "Fourteen " TEENARRAY$(5) = "Fifteen " TEENARRAY$(6) = "Sixteen " TEENARRAY$(7) = "Seventeen " TEENARRAY$(8) = "Eighteen " TEENARRAY$(9) = "Nineteen " WORD$ = "" NUM$ = STR$(NUM#) NUM$ = RIGHT$(NUM$, LEN(NUM$) - 1) NUMLEN = LEN(NUM$) DECCHECK = INSTR(NUM$, ".") IF DECCHECK > 0 THEN DECIMAL$ = RIGHT$(NUM$, NUMLEN - DECCHECK) END IF DENOMINATOR$ = "10" FOR ZEROS = 1 TO LEN(DECIMAL$) DENOMINATOR$ = DENOMINATOR$ + "0" NEXT ZEROS DECIMAL$ = DECIMAL$ + "/" + DENOMINATOR$ NUM$ = LEFT$(NUM$, DECCHECK - 1) NUMLEN = LEN(NUM$) WHILE NUMLEN > 0 NUM$ = RIGHT$(NUM$, NUMLEN) NUMCHECK$ = LEFT$(NUM$, 1) NUMCHECK = VAL(NUMCHECK$) ON NUMLEN GOSUB ONES, TENS, HUNDREDS, THOUSANDS, TENTHOUSANDS, HUNDREDTHOUSA NUMLEN = NUMLEN - 1 WEND WORD$ = WORD$ + DECIMAL$ EXIT SUB HUNDREDTHOUSANDS: WORD$ = WORD$ + ONEARRAY$(NUMCHECK) + "Hundred " RETURN TENTHOUSANDS: IF NUMCHECK$ = "1" THEN GOSUB TEENS: WORD$ = WORD$ + "Thousand " ELSE WORD$ = WORD$ + NUMARRAY$(NUMCHECK) END IF RETURN THOUSANDS: WORD$ = WORD$ + ONEARRAY$(NUMCHECK) + "Thousand " RETURN HUNDREDS: WORD$ = WORD$ + ONEARRAY$(NUMCHECK) + "Hundred " RETURN TENS: IF NUMCHECK$ = "1" THEN GOSUB TEENS: WORD$ = WORD$ ELSE WORD$ = WORD$ + NUMARRAY$(NUMCHECK) END IF RETURN ONES: WORD$ = WORD$ + ONEARRAY$(NUMCHECK) RETURN TEENS: NUMLEN = NUMLEN = NUMLEN - 1 NUMCHECK$ = RIGHT$(NUM$, 1) NUMCHECK = VAL(NUMCHECK$) WORD$ = WORD$ + TEENARRAY$(NUMCHECK) RETURN END SUB ===================================================================== I hope this solves your problem. Tom --- þ SLMR 2.1a þ --- þ SLMR 2.1a þ --- FidoPCB v1.4 beta * Origin: ASA CompuHelp "We're A Step Ahead" (614)476-4058 (1:226/600)
Books at Amazon:
Back to BASIC: The History, Corruption, and Future of the Language
Hackers: Heroes of the Computer Revolution (including Tiny BASIC)
Go to: The Story of the Math Majors, Bridge Players, Engineers, Chess Wizards, Scientists and Iconoclasts who were the Hero Programmers of the Software Revolution
The Advent of the Algorithm: The Idea that Rules the World
Moths in the Machine: The Power and Perils of Programming
Mastering Visual Basic .NET