Standard C Library Functions econvert(3C)
NAME
econvert, fconvert, gconvert, seconvert, sfconvert, sgcon-
vert, qeconvert, qfconvert, qgconvert - output conversion
SYNOPSIS
#include
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);
char *qeconvert(quadruple *value, int ndigit, int *decpt, int *sign,
char *buf);
char *qfconvert(quadruple *value, int ndigit, int *decpt, int *sign
char *buf);
char *qgconvert(quadruple *value, int ndigit, int trailing, char *buf);
DESCRIPTION
The econvert() function converts the value to a null-
terminated string of ndigit ASCI digits in buf and returns
a pointer to buf. buf should contain at least ndigit]1 char-
acters. 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 numeri-
cal 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.
SunOS 5.11 Last change: 3 May 1999 1
Standard C Library Functions econvert(3C)
The fconvert() function 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 round-
ing 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.
The gconvert() function converts the value to a null-
terminated ASCI string in buf and returns a pointer to buf.
It produces ndigit significant digits in fixed-decimal for-
mat, 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).
The seconvert(), sfconvert(), and sgconvert() functions 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 dou-
ble.
The qeconvert(), qfconvert(), and qgconvert() functions are
quadruple-precision versions of these functions. The qfcon-
vert() function can overflow the decimalrecord field ds
if value is too large. In that case, buf[0] is set to zero.
The ecvt(), fcvt() and gcvt() functions are versions of
econvert(), fconvert(), and gconvert(), respectively, that
are documented on the ecvt(3C) manual page. They constitute
the default implementation of these functions and conform to
the X/Open CAE Specification, System Interfaces and Headers,
Issue 4, Version 2.
USAGE
IE Infinities and NaNs are treated similarly by these
functions. ``NaN'' is returned for NaN, and ``Inf'' or
SunOS 5.11 Last change: 3 May 1999 2
Standard C Library Functions econvert(3C)
``Infinity'' for Infinity. The longer form is produced when
ndigit >= 8.
ATRIBUTES
See attributes(5) for descriptions of the following attri-
butes:
ATRIBUTE TYPE ATRIBUTE VALUE
MT-Level MT-Safe
SEE ALSO
ecvt(3C),sprintf(3C), attributes(5)
SunOS 5.11 Last change: 3 May 1999 3
|