econvert(3) UNIX System V(BSD Compatibility Package) econvert(3)
NAME
econvert, fconvert, gconvert, seconvert, sfconvert, sgconvert - output
conversion
SYNOPSIS
cc [ flag. . . ] file . . . -lucb
#include <floatingpoint.h>
char *econvert(value, ndigit, decpt, sign, buf)
double value;
int ndigit, *decpt, *sign;
char *buf;
char *fconvert(value, ndigit, decpt, sign, buf)
double value;
int ndigit, *decpt, *sign;
char *buf;
char *gconvert(value, ndigit, trailing, buf)
double value;
int ndigit;
int trailing;
char *buf;
char *seconvert(value, ndigit, decpt, sign, buf)
single *value;
int ndigit, *decpt, *sign;
char *buf;
char *sfconvert(value, ndigit, decpt, sign, buf)
single *value;
int ndigit, *decpt, *sign;
char *buf;
char *sgconvert(value, ndigit, trailing, buf)
single *value;
int ndigit;
int trailing;
char *buf;
DESCRIPTION
econvert converts the value to a NULL-terminated string of ndigit ASCII
digits in buf and returns a pointer to buf. buf should contain at least
ndigit+1 characters. The position of the decimal point relative to the
beginning of the string is stored indirectly through decpt. Thus buf ==
"314" and *decpt == 1 corresponds to the numerical value 3.14, while buf
== "314" and *decpt == -1 corresponds to the numerical value .0314. If
the sign of the result is negative, the word pointed to by sign is
nonzero; otherwise it is zero. The least significant digit is rounded.
10/89 Page 1
econvert(3) UNIX System V(BSD Compatibility Package) econvert(3)
fconvert works much like econvert, except that the correct digit has been
rounded as if for sprintf(%w.nf) output with n=ndigit digits to the right
of the decimal point. ndigit can be negative to indicate rounding to the
left of the decimal point. The return value is a pointer to buf. buf
should contain at least 310+max(0,ndigit) characters to accommodate any
double-precision value.
gconvert converts the value to a NULL-terminated ASCII string in buf and
returns a pointer to buf. It produces ndigit significant digits in
fixed-decimal format, like sprintf(%w.nf), if possible, and otherwise in
floating-decimal format, like sprintf(%w.ne); in either case buf is ready
for printing, with sign and exponent. The result corresponds to that
obtained by
(void) sprintf(buf,``%w.ng'',value) ;
If trailing= 0, trailing zeros and a trailing point are suppressed, as in
sprintf(%g). If trailing!= 0, trailing zeros and a trailing point are
retained, as in sprintf(%#g).
seconvert, sfconvert, and sgconvert are single-precision versions of
these functions, and are more efficient than the corresponding double-
precision versions. A pointer rather than the value itself is passed to
avoid C's usual conversion of single-precision arguments to double.
IEEE Infinities and NaNs are treated similarly by these functions.
``NaN'' is returned for NaN, and ``Inf'' or ``Infinity'' for Infinity.
The longer form is produced when ndigit > 8.
SEE ALSO
sprintf(3S) in the Programmer's Reference Manual
Page 2 10/89