gawk: OFMT
5.4 Controlling Numeric Output with 'print'
===========================================
When printing numeric values with the 'print' statement, 'awk'
internally converts each number to a string of characters and prints
that string. 'awk' uses the 'sprintf()' function to do this conversion
(String Functions). For now, it suffices to say that the
'sprintf()' function accepts a "format specification" that tells it how
to format numbers (or strings), and that there are a number of different
ways in which numbers can be formatted. The different format
specifications are discussed more fully in Control Letters.
The predefined variable 'OFMT' contains the format specification that
'print' uses with 'sprintf()' when it wants to convert a number to a
string for printing. The default value of 'OFMT' is '"%.6g"'. The way
'print' prints numbers can be changed by supplying a different format
specification for the value of 'OFMT', as shown in the following
example:
$ awk 'BEGIN {
> OFMT = "%.0f" # print numbers as integers (rounds)
> print 17.23, 17.54 }'
-| 17 18
According to the POSIX standard, 'awk''s behavior is undefined if 'OFMT'
contains anything but a floating-point conversion specification. (d.c.)