econvert(3) (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.
7/91 Page 1
econvert(3) (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 7/91