Formatted numeric output: Difference between revisions
Dialects of BASIC moved to the BASIC section.
Thundergnat (talk | contribs) m (syntax highlighting fixup automation) |
(Dialects of BASIC moved to the BASIC section.) |
||
Line 333:
Same output as the C code.
=={{header|
==={{header|BaCon}}===
BaCon can use C style <tt>printf</tt> format specifiers.
Line 344 ⟶ 345:
00007.125</pre>
==={{header|BBC BASIC}}===
<syntaxhighlight lang="bbcbasic"> PRINT FNformat(PI, 9, 3)
PRINT FNformat(-PI, 9, 3)
Line 361 ⟶ 362:
-0003.142
</pre>
==={{header|FreeBASIC}}===
<syntaxhighlight lang="freebasic">' FB 1.05.0 Win64
#Include "vbcompat.bi"
Dim s As String = Format(7.125, "00000.0##")
Print s
Sleep</syntaxhighlight>
{{out}}
<pre>
00007.125
</pre>
==={{header|FutureBasic}}===
<syntaxhighlight lang="futurebasic">window 1, @"Formatted Numeric Output", (0,0,480,270)
print using "0000#.###";7.125
HandleEvents</syntaxhighlight>
Output:
<pre>
00007.125
</pre>
==={{header|IS-BASIC}}===
<syntaxhighlight lang="is-basic">100 LET F=7.125
110 PRINT USING "-%%%%%.###":F</syntaxhighlight>
==={{header|Liberty BASIC}}===
Custom function builds on the supplied 'print using( "###.###", n)'.<br>
NB no check that this does not truncate high-order digits...
and remember LB calculates with more figures than its normal 'print' displays.
<syntaxhighlight lang="lb">
for i = 1 to 10
n = rnd(1) * 10 ^ (int(10 * rnd(1)) - 2)
print "Raw number = "; n, "Using custom function = "; FormattedPrint$(n, 16, 5)
next i
end
function FormattedPrint$(n, length, decPlaces)
format$ = "#."
for i = 1 to decPlaces
format$ = format$ + "#"
next i
n$ = using(format$, n) ' remove leading spaces if less than 3 figs left of decimal
' add leading zeros
for i = 1 to len(n$)
c$ = mid$(n$, i, 1)
if c$ = " " or c$ = "%" then nn$ = nn$ + "0" else nn$ = nn$ + c$
next i
FormattedPrint$ = right$( "000000000000" +nn$, length) ' chop to required length
end function
</syntaxhighlight>
{{out}}
<pre>
Raw number = 0.92349667e-2 Using custom function = 0000000000.00923
Raw number = 0.45244905 Using custom function = 0000000000.45245
Raw number = 3084321.68 Using custom function = 0003084321.68220
Raw number = 545.557351 Using custom function = 0000000545.55735
Raw number = 765.455263 Using custom function = 0000000765.45526
Raw number = 650413.092 Using custom function = 0000650413.09248
Raw number = 0.85554345 Using custom function = 0000000000.85554
Raw number = 296.155771 Using custom function = 0000000296.15577
Raw number = 8.3816344 Using custom function = 0000000008.38163
Raw number = 0.1007265e-2 Using custom function = 0000000000.00101
</pre>
==={{header|PureBasic}}===
Using RSet() to pad 7.125 with 3 decimals converted to a string, to 8 char length.
<syntaxhighlight lang="purebasic">RSet(StrF(7.125,3),8,"0") ; Will be 0007.125</syntaxhighlight>
==={{header|Run BASIC}}===
<syntaxhighlight lang="runbasic">print right$("00000";using("#####.##",7.125),8) ' => 00007.13</syntaxhighlight>
==={{header|TI-89 BASIC}}===
{{improve|TI-89 BASIC|It does not handle negative numbers.}}
<syntaxhighlight lang="ti89b">right("00000" & format(7.12511, "f3"), 9)</syntaxhighlight>
==={{header|VBA}}===
<syntaxhighlight lang="vb">Option Explicit
Sub Main()
Debug.Print fFormat(13, 2, 1230.3333)
Debug.Print fFormat(2, 13, 1230.3333)
Debug.Print fFormat(10, 5, 0.3333)
Debug.Print fFormat(13, 2, 1230)
End Sub
Private Function fFormat(NbInt As Integer, NbDec As Integer, Nb As Double) As String
'NbInt : Lenght of integral part
'NbDec : Lenght of decimal part
'Nb : decimal on integer number
Dim u As String, v As String, i As Integer
u = CStr(Nb)
i = InStr(u, Application.DecimalSeparator)
If i > 0 Then
v = Mid(u, i + 1)
u = Left(u, i - 1)
fFormat = Right(String(NbInt, "0") & u, NbInt) & Application.DecimalSeparator & Left(v & String(NbDec, "0"), NbDec)
Else
fFormat = Right(String(NbInt, "0") & u, NbInt) & Application.DecimalSeparator & String(NbDec, "0")
End If
End Function
</syntaxhighlight>
{{out}}
<pre>0000000001230.33
30.3333000000000
0000000000.33330
0000000001230.00</pre>
==={{header|VBScript}}===
{{works with|Windows Script Host|*}}
<syntaxhighlight lang="vbscript">
a = 1234.5678
' Round to three decimal places. Groups by default. Output = "1,234.568".
WScript.Echo FormatNumber(a, 3)
' Truncate to three decimal places. Output = "1234.567".
WScript.Echo Left(a, InStr(a, ".") + 3)
' Round to a whole number. Grouping disabled. Output = "1235".
WScript.Echo FormatNumber(a, 0, , , False)
' Use integer portion only and pad with zeroes to fill 8 chars. Output = "00001234".
WScript.Echo Right("00000000" & Int(a), 8)
</syntaxhighlight>
==={{header|Visual Basic}}===
{{works with|Visual Basic|VB6 Standard}}
<syntaxhighlight lang="vb">
Debug.Print Format$(7.125, "00000.000")
</syntaxhighlight>
Output (the decimal separator used depends on the system's language settings):
<syntaxhighlight lang="vb">
00007.125
</syntaxhighlight>
==={{header|ZX Spectrum Basic}}===
<syntaxhighlight lang="zxbasic">10 LET n=7.125
20 LET width=9
30 GO SUB 1000
40 PRINT AT 10,10;n$
50 STOP
1000 REM Formatted fixed-length
1010 LET n$=STR$ n
1020 FOR i=1 TO width-LEN n$
1030 LET n$="0"+n$
1040 NEXT i
1050 RETURN </syntaxhighlight>
=={{header|bc}}==
Line 1,036 ⟶ 1,193:
=={{header|Free Pascal}}==
''See [[#Pascal|Pascal]]''
=={{header|Fōrmulæ}}==
Line 1,168 ⟶ 1,300:
print, n, format='(f08.3)'
;==> 0007.125</syntaxhighlight>
=={{header|J}}==
Line 1,361 ⟶ 1,489:
{{out}}
<pre>00007.125</pre>
=={{header|Logo}}==
Line 1,711 ⟶ 1,799:
or by invoking <code>ToString</code> on the number:
<syntaxhighlight lang="powershell">7.125.ToString('00000.000')</syntaxhighlight>
=={{header|Python}}==
Line 2,008 ⟶ 2,092:
puts " %09.3f" % -r #=> -0007.125
puts " %+09.3f" % r #=> +0007.125</syntaxhighlight>
=={{header|Rust}}==
Line 2,162 ⟶ 2,243:
format "%08.3f" $number</syntaxhighlight>
Use with <tt>puts</tt> if output is desired to go to a channel.
=={{header|Toka}}==
Line 2,210 ⟶ 2,285:
7.125
</pre>
=={{header|Vedit macro language}}==
Line 2,267 ⟶ 2,292:
<syntaxhighlight lang="vedit">#1 = 7125
Num_Ins(#1, FILL+COUNT, 9) Char(-3) Ins_Char('.')</syntaxhighlight>
{{out}}
<pre>
00007.125
</pre>
=={{header|Wren}}==
Line 2,320 ⟶ 2,334:
"%09d".fmt(7.125) //-->"000000007"
"%09,d".fmt(78901.125)//-->"00078,901"</syntaxhighlight>
|