Linux Programmer’s Manual
ecvt, fcvt − convert a floating-point number to a string
char *ecvt(double number, int ndigits, int *decpt, int *sign);
char *fcvt(double number, int ndigits, int *decpt, int *sign);
Feature Test Macro Requirements for glibc (see feature_test_macros(7)):
ecvt(), fcvt(): _SVID_SOURCE || _XOPEN_SOURCE >= 500
The ecvt() function converts number to a null-terminated string of ndigits digits (where ndigits is reduced
to a system-specific limit determined by the precision of a double), and returns a pointer to the string. The
high-order digit is nonzero, unless number is zero. The low order digit is rounded. The string itself does
not contain a decimal point; however, the position of the decimal point relative to the start of the string is
stored in *decpt. A negative value for *decpt means that the decimal point is to the left of the start of the
string. If the sign of number is negative, *sign is set to a nonzero value, otherwise it is set to 0. If number
is zero, it is unspecified whether *decpt is 0 or 1.
The fcvt() function is identical to ecvt(), except that ndigits specifies the number of digits after the decimal
Both the ecvt() and fcvt() functions return a pointer to a static string containing the ASCII representation of
number. The static string is overwritten by each call to ecvt() or fcvt().
SVr2; marked as LEGACY in POSIX.1-2001. POSIX.1-2008 removes the specifications of ecvt() and
fcvt(), recommending the use of sprintf(3) instead (though snprintf(3) may be preferable).
Linux libc4 and libc5 specified the type of ndigits as size_t. Not all locales use a point as the radix charac-
ter ("decimal point").
ecvt_r(3), gcvt(3), qecvt(3), setlocale(3), sprintf(3)
This page is part of release 3.24 of the Linux man-pages project. A description of the project, and informa-
tion about reporting bugs, can be found at http://www.kernel.org/doc/man-pages/.