econvert(3) C LIBRARY FUNCTIONS econvert(3)
NAME
econvert, fconvert, gconvert, seconvert, sfconvert, sgcon-
vert - 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 posi-
tion 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 nega-
tive, the word pointed to by sign is nonzero; otherwise it
is zero. The least significant digit is rounded. 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 accomodate
any double-precision value. gconvert converts the value to
Last change: BSD Compatibility Package 1
econvert(3) C LIBRARY FUNCTIONS econvert(3)
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 other-
wise 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 ver-
sions. 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.
Last change: BSD Compatibility Package 2