econvert(3BSD) (BSD System Compatibility) econvert(3BSD)
NAME
econvert, fconvert, gconvert, seconvert, sfconvert, sgconvert
- (BSD) output conversion
SYNOPSIS
/usr/ucb/cc [flag . . . ] file . . .
#include <fp.h>
char *econvert(double value,
int ndigit, int *decpt, int *sign, char *buf);
char *fconvert (double value,
int ndigit, int *decpt, int *sign, char *buf);
char *gconvert(double value,
int ndigit, int trailing, char *buf);
char *seconvert(single *value,
int ndigit, int *decpt, int *sign, char *buf);
char *sfconvert(single *value,
int ndigit, int *decpt, int *sign, char *buf);
char *sgconvert(single *value,
int ndigit, int trailing, char *buf);
DESCRIPTION
econvert converts 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.
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
Copyright 1994 Novell, Inc. Page 1
econvert(3BSD) (BSD System Compatibility) econvert(3BSD)
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 NaNs, and Inf or Infinity for
Infinities. The longer form is produced when ndigit is at
least 8.
REFERENCES
fprintf(3S)
Note: Most applications should use sprintf [see fprintf(3S)],
strtod(3C) and strtold [see strtod(3C)] instead of these
functions.
Copyright 1994 Novell, Inc. Page 2