Data update
This commit is contained in:
parent
72eb4943cb
commit
4d5544505c
2347 changed files with 62432 additions and 16731 deletions
|
|
@ -0,0 +1,59 @@
|
|||
(
|
||||
OP UNSUPPRESS = ( STRING v )STRING: # replace leading spaces with zeros #
|
||||
IF LWB v > UPB v
|
||||
THEN v # empty string #
|
||||
ELSE STRING result := v;
|
||||
INT p1 := LWB result;
|
||||
IF result[ p1 ] = " " THEN result[ p1 ] := "0" FI;
|
||||
FOR p FROM LWB result + 1 TO UPB result DO
|
||||
CHAR c = result[ p ];
|
||||
IF c = " " THEN result[ p ] := "0"
|
||||
ELIF c = "-" OR c = "+" THEN result[ p ] := "0"; result[ p1 ] := c
|
||||
ELIF c = "e" THEN p1 := p + 1
|
||||
FI
|
||||
OD;
|
||||
result
|
||||
FI # UNSUPPRESS # ;
|
||||
OP SUPPRESSPLUS = ( STRING v )STRING: # replace leading space/zero with "+" #
|
||||
IF LWB v > UPB v THEN v ELIF CHAR c = v[ LWB v ]; c = "+" OR c = "0" THEN " " + v[ LWB v + 1 : ] ELSE v FI;
|
||||
PRIO SUPPRESS = 5; # suppress up to d leading zeros #
|
||||
OP SUPPRESS = ( STRING v, INT d )STRING:
|
||||
IF LWB v > UPB v
|
||||
THEN v
|
||||
ELIF CHAR c1 = v[ LWB v ]; c1 /= "+" AND c1 /= "-" AND c1 /= "0"
|
||||
THEN v
|
||||
ELSE INT len = ( UPB v - LWB v ) + 1;
|
||||
INT max p = ( LWB v - 1 ) + IF len > d THEN d ELSE len FI;
|
||||
STRING result := v;
|
||||
CHAR sign char = IF c1 = "0" THEN " " ELSE c1 FI;
|
||||
result[ LWB result ] := " ";
|
||||
BOOL inserted sign := FALSE;
|
||||
FOR p FROM LWB result + 1 TO max p
|
||||
WHILE CHAR c = result[ p ];
|
||||
IF c /= "0" THEN result[ p - 1 ] := sign char; inserted sign := TRUE FI;
|
||||
NOT inserted sign
|
||||
DO result[ p ] := " "
|
||||
OD;
|
||||
IF NOT inserted sign THEN result[ max p ] := sign char FI;
|
||||
result
|
||||
FI # SUPPRESS # ;
|
||||
|
||||
REAL r=exp(pi)-pi;
|
||||
print((r,newline));
|
||||
print((fixed(-r,16,4),newline));
|
||||
print((fixed(r,-16,4),newline));
|
||||
print((fixed(r,16,4),newline));
|
||||
print((float(r,16,4,1),newline));
|
||||
|
||||
print((SUPPRESSPLUS UNSUPPRESS fixed(-r,-10,4),newline));
|
||||
print((SUPPRESSPLUS UNSUPPRESS fixed(r,-10,4),newline));
|
||||
print((UNSUPPRESS fixed(r,10,4),newline));
|
||||
print((UNSUPPRESS fixed(ABS r,-10,4),newline));
|
||||
|
||||
print((fixed(ABS r,-10,4),newline));
|
||||
|
||||
print((SUPPRESSPLUS UNSUPPRESS fixed(-r,12,4) SUPPRESS 5,newline));
|
||||
print((SUPPRESSPLUS UNSUPPRESS float(-r,16,4,-3) SUPPRESS 5,newline));
|
||||
print((SUPPRESSPLUS UNSUPPRESS float(-r,-13,4,3),newline));
|
||||
print((SUPPRESSPLUS UNSUPPRESS float(r,-17,4,5),newline))
|
||||
)
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
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
|
||||
|
|
@ -1,3 +1,18 @@
|
|||
var n = 123;
|
||||
var str = ("00000" + n).slice(-5);
|
||||
alert(str);
|
||||
function fmt(n, options) {
|
||||
const [whole, fraction] = String(n).split('.', 2)
|
||||
return [
|
||||
whole.padStart(options.whole || 1, '0'),
|
||||
(fraction ?? '').padEnd(options.fraction, '0').slice(0, options.fraction),
|
||||
].filter(Boolean).join('.')
|
||||
}
|
||||
|
||||
for (const [n, options] of [
|
||||
[123, { whole: 1, fraction: 2 }], // 123.00
|
||||
[123, { whole: 5, fraction: 2 }], // 00123.00
|
||||
[123, { whole: 5, fraction: 0 }], // 00123
|
||||
[0.5, { whole: 1, fraction: 2 }], // 0.50
|
||||
[0.5, { whole: 5, fraction: 2 }], // 00000.50
|
||||
[0.5, { whole: 5, fraction: 0 }], // 00000
|
||||
]) {
|
||||
console.log(fmt(n, options))
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue