ECONVERT(3C) Standard C Library Functions ECONVERT(3C)

NAME


econvert, fconvert, gconvert, seconvert, sfconvert, sgconvert,
qeconvert, qfconvert, qgconvert - output conversion

SYNOPSIS


#include <floatingpoint.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);


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 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.


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 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.


The gconvert() function 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).


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 double.


The qeconvert(), qfconvert(), and qgconvert() functions are
quadruple-precision versions of these functions. The qfconvert()
function can overflow the decimal_record 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


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.

ATTRIBUTES


See attributes(7) for descriptions of the following attributes:


+---------------+-----------------+
|ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+---------------+-----------------+
|MT-Level | MT-Safe |
+---------------+-----------------+

SEE ALSO


ecvt(3C), sprintf(3C), attributes(7)

April 9, 2016 ECONVERT(3C)

tribblix@gmail.com :: GitHub :: Privacy