| Author | Topic: Format$ function (Read 436 times) |
buffoasys Guest
|  | Format$ function « Thread Started on Dec 22, 2003, 9:59pm » | |
format a double precision number to a string without using print using. Works up to 999 million. EXAMPLE USAGE
dim amount as double amount=12345.67 prtamt$=format$(amount,"##,###,###.##") print prtamt$
FUNCTION FORMAT$ (amt AS DOUBLE, msk$) wholepart& = amt L% = INSTR(msk$, ".") IF L% THEN places% = LEN(msk$) - L% IF L% THEN decimal& = (amt - wholepart&) * 10 ^ places% ELSE decimal& = 0 xx$ = LTRIM$(STR$(wholepart& + decimal& / 10 ^ places%)) wholepart& = FIX(VAL(xx$)) IF wholepart& < 0 THEN multiplier% = -1 ELSE multiplier% = 1 wholepart& = ABS(wholepart&) IF ABS(wholepart&) > 1000000 THEN millions& = FIX(wholepart& / 1000000) wholepart& = wholepart& - FIX(millions& * 1000000) END IF IF ABS(wholepart&) > 1000 THEN thousands& = FIX(wholepart& / 1000) wholepart& = wholepart& - FIX(thousands& * 1000) END IF IF multiplier% = -1 THEN zz$ = "-" IF millions& THEN zz$ = zz$ + LTRIM$(STR$(millions&)) IF INSTR(msk$, ",") THEN zz$ = zz$ + "," END IF IF thousands& THEN zz$ = zz$ + LTRIM$(STR$(thousands&)) IF INSTR(msk$, ",") THEN zz$ = zz$ + "," END IF zz$ = zz$ + LTRIM$(STR$(wholepart&)) IF decimal& THEN zz$ = zz$ + "." + LTRIM$(STR$(decimal&)) END IF Part2: part2A: part2B: Part3: ' B$ = SPACE$(LEN(msk$)) ' RSET B$ = zz$ FORMAT$ = RIGHT$(SPACE$(LEN(msk$)) + zz$, LEN(msk$))'B$ END FUNCTION
| |
| |
|