28 lines
1.1 KiB
Plaintext
28 lines
1.1 KiB
Plaintext
0 P = 5:T = 3:R = 7.125: GOSUB 100"FORMATTED NUMERIC OUTPUT
|
|
9 END
|
|
|
|
REM FORMATTED NUMERIC OUTPUT
|
|
|
|
REM Given R a Real number
|
|
REM and P as left Padding amount, P$ as the Padding
|
|
REM and T as the Trailing amount, T$ as the Trailing padding
|
|
|
|
100 R$ = STR$ (R):L = LEN (R$):S$ = "": IF MID$ (R$,1,1) = " " THEN S$ = " ":L = L - 1:R$ = RIGHT$ (R$,L)
|
|
110 IF MID$ (R$,1,1) = "-" THEN L = L - 1:R$ = RIGHT$ (R$,L):S$ = S$ + "-": REM SIGN
|
|
120 LET D$ = "":D = 0:E$ = "":E = 0: REM DECIMAL, EXPONENT and POSITIONS
|
|
130 IF P$ = "" THEN P$ = "0": REM LEFT PADDING
|
|
140 IF T$ = "" THEN T$ = "0": REM TRAILING PADDING
|
|
150 FOR I = 1 TO L
|
|
160 LET C$ = MID$ (R$,I,1)
|
|
170 IF C$ = "." THEN D = I
|
|
180 IF C$ = "E" THEN E = I
|
|
190 NEXT I
|
|
200 IF E THEN E$ = MID$ (R$,E):R$ = LEFT$ (R$,E - 1)
|
|
210 IF D THEN D$ = MID$ (R$,D + 1):R$ = LEFT$ (R$,D - 1)
|
|
220 LET PAD$ = "": FOR I = 1 TO P:PAD$ = P$ + PAD$: NEXT
|
|
230 PRINT S$ RIGHT$ (PAD$ + R$,P);
|
|
240 LET PAD$ = "": FOR I = 1 TO T:PAD$ = PAD$ + T$: NEXT
|
|
250 IF T THEN PRINT "." LEFT$ (D$ + PAD$,T);
|
|
260 PRINT E$;
|
|
270 RETURN
|