Formatted numeric output: Difference between revisions

→‎{{header|BASIC}}: Added ANSI BASIC.
imported>Maxima enthusiast
No edit summary
(→‎{{header|BASIC}}: Added ANSI BASIC.)
 
(5 intermediate revisions by 3 users not shown)
Line 213:
1.9999e01
1.9999e0001
</pre>
 
=={{header|Amazing Hopper}}==
<syntaxhighlight lang="c">
#include <basico.h>
 
#proto padzeros(_X_,_S_,_D_)
#proto padmoney(_N_,_D_,_F_,_S_,_P_)
 
algoritmo
 
n={}, '125, 12.39802, 0.0003221, -0.0045, 457897.789' enlistar en 'n'
 
fijar separador 'NL'
imprimir( "Express a number in decimal as a fixed-length string with leading zeros:\n\n",\
#(pad zeros(n,19,5)), "\n\n",\
#(pad zeros(n,19,0)), "\n\n",\
#(pad zeros( (-9873000155.584),19,1)), "\n\n",\
"Bonus track:\n\n",\
#(lpad( " ",20,string(n))), "\n\n",\
#(lpad( " ",20,notation(n))),"\n\n",\
#(pad money(n,1,".",19,"$")),"\n\n",\
#(pad money(1980.67,1,"_",16,"USD$"),NL))
 
terminar
 
subrutinas
 
pad zeros(n, l, d)
decimales 'd'
s=0, sgn=0
#( s = string( n * sgn:=(sign(n)) ) )
#( sgn = string(sgn) )
si ( s, es matriz? )
mapear( #(sgn=="-1"), "-", sgn )
mapear( #(sgn=="1"), " ", sgn )
sino
#(sgn=="-1"), entonces{ "-",mover a 'sgn' }
#(sgn=="1"), entonces{ " ",mover a 'sgn' }
fin si
#(cat( sgn, lpad( "0",l,s)))
decimales normales
retornar
 
pad money(num, dec, fill, size, prefix)
#(cat(prefix,lpad(fill,size,money(dec,num))))
retornar
</syntaxhighlight>
{{out}}
<pre>
Express a number in decimal as a fixed-length string with leading zeros:
 
0000000000125.00000
0000000000012.39802
0000000000000.00032
-0000000000000.00450
0000000457897.78900
 
0000000000000000125
0000000000000000012
0000000000000000000
-0000000000000000000
0000000000000457898
 
-00000009873000155.6
 
Bonus track:
 
125
12.398020
0.000322
-0.004500
457897.789000
 
1.250000e+02
1.239802e+01
3.221000e-04
-4.500000e-03
4.578978e+05
 
$..............125.0
$...............12.4
$................0.0
$...............-0.0
$..........457,897.8
 
USD$_________1,980.7
 
</pre>
 
Line 334 ⟶ 422:
 
=={{header|BASIC}}==
==={{header|ANSI BASIC}}===
{{works with|Decimal BASIC}}
<syntaxhighlight lang="basic">
100 REM Formatted numeric output
110 LET N = 7.125
120 PRINT USING ("%%%%.###"): N
130 PRINT USING ("****.###"): N
140 PRINT USING ("####.###"): N
150 PRINT USING ("+%%%.###"): N
160 PRINT USING ("+%%%.###"): -N
170 PRINT USING (".###^^^^^"): N
180 PRINT USING ("#.###^^^^^"): N
190 PRINT USING ("##.###^^^^^"): N
200 PRINT USING ("+.###^^^^^"): -N
210 END
</syntaxhighlight>
{{out}}
<pre>
0007.125
***7.125
7.125
+007.125
-007.125
.713E+001
7.125E+000
71.250E-001
-.713E+001
</pre>
 
==={{header|BaCon}}===
BaCon can use C style <tt>printf</tt> format specifiers.
Line 1,911 ⟶ 2,028:
e=1.9999e+01 f=19.9991 g=20 !
</pre>
 
=={{header|Quackery}}==
 
Behaviour of <code>format ( $ a b --> $ )</code>
 
Accepts a well formatted numerical string <code>$</code>, optionally with a decimal point, without validation.
 
<code>a</code> is the number of digits before the decimal point. <code>b</code> is the number of digits after the decimal point.
 
Returns a string <code>$</code> with either a leading zero or a leading space, then ''at least'' <code>a</code> digits, then a decimal point, then ''at least'' <code>b</code> digits. The digits are padded with zeroes fore and aft if required.
 
"''at least''" – if there are already more digits before the point than <code>a</code>, and/or more digits after the point than <code>b</code>, it will ''not'' crop the number. IMO, it is better to mess up the formatting than to display an incorrect number. Check the $ is not too long fore or aft before passing to <code>format</code> if the string may be truncated.
 
<syntaxhighlight lang="Quackery"> [ over find swap found ] is has ( $ c --> b )
 
[ over 0 peek
char - = iff
[ dip [ behead drop ]
true unrot ]
else [ false unrot ]
over char . swap find
- char 0 swap of
swap join
swap iff char -
else space
swap join ] is left-pad ( $ n --> $ )
 
[ over char . has not if
[ dip [ char . join ] ]
over char . swap find
dip [ over size ]
1+ - -
char 0 swap of
join ] is right-pad ( $ n --> $ )
 
[ dip left-pad right-pad ] is format ( $ n n --> $ )
 
' [ $ "7.125"
$ "-7.125"
$ "0.125"
$ "-0.12"
$ "7.12"
$ "-7.12"
$ "0.12"
$ "-0.12"
$ "7"
$ "-7"
$ "0" ]
witheach
[ do 5 3 format echo$ cr ]</syntaxhighlight>
 
{{out}}
 
<pre> 00007.125
-00007.125
00000.125
-00000.120
00007.120
-00007.120
00000.120
-00000.120
00007.000
-00007.000
00000.000</pre>
 
=={{header|R}}==
Line 2,394 ⟶ 2,575:
=={{header|Wren}}==
{{libheader|Wren-fmt}}
<syntaxhighlight lang="ecmascriptwren">import "./fmt" for Fmt
 
var n = 7.125
511

edits