ecvt, fcvt, gcvt - convert double to ASCII string
#include <stdlib.h>
char *
ecvt(double value, int ndigit, int *decpt, int *sign);
char *
fcvt(double value, int ndigit, int *decpt, int *sign);
char *
gcvt(double value, int ndigit, char *buf);
These functions are provided for compatibility with legacy
code. New
code should use the snprintf(3) function for improved safety
and porta-
bility.
The ecvt(), fcvt() and gcvt() functions convert the double
precision
floating-point number value to a NUL-terminated ASCII
string.
The ecvt() function converts value to a NUL-terminated
string of exactly
ndigit digits and returns a pointer to that string. The result is padded
with zeroes from left to right as needed. There are no
leading zeroes
unless value itself is 0. The least significant digit is
rounded in an
implementation-dependent manner. The position of the decimal point relative
to the beginning of the string is stored in decpt. A
negative value
indicates that the decimal point is located to the left of
the returned
digits (this occurs when there is no whole number component
to value).
If value is zero, it is unspecified whether the integer
pointed to by
decpt will be 0 or 1. The decimal point itself is not included in the
returned string. If the sign of the result is negative, the
integer
pointed to by sign is non-zero; otherwise, it is 0.
If the converted value is out of range or is not representable, the contents
of the returned string are unspecified.
The fcvt() function is identical to ecvt() with the exception that ndigit
specifies the number of digits after the decimal point (zero-padded as
needed).
The gcvt() function converts value to a NUL-terminated
string similar to
the %g printf(3) format specifier and stores the result in
buf. It produces
ndigit significant digits similar to the %f printf(3)
format specifier
where possible. If ndigit does allow sufficient precision, the result
is stored in exponential notation similar to the %e
printf(3) format
specifier. If value is less than zero, buf will be prefixed
with a minus
sign. A decimal point is included in the returned string if
value is not
a whole number. Unlike the ecvt() and fcvt() functions, buf
is not zeropadded.
The ecvt(), fcvt() and gcvt() functions return a NUL-terminated string
representation of value.
The ecvt() and fcvt() functions return a pointer to internal
storage
space that will be overwritten by subsequent calls to either
function.
The maximum possible precision of the return value is limited by the precision
of a double and may not be the same on all architectures.
The snprintf(3) function is preferred over these functions
for new code.
printf(3), strtod(3)
The ecvt(), fcvt() and gcvt() functions conform to IEEE Std
1003.1-2001
(``POSIX'').
OpenBSD 3.6 December 1, 2002
[ Back ] |