ecvt, fcvt - convert a floating-point number to a string
Contents
Attributes
For an explanation of the terms used in this section, see attributes(7).
┌─────────────────────────────────────────────────────────────────┬───────────────┬─────────────────────┐
│ Interface │ Attribute │ Value │
├─────────────────────────────────────────────────────────────────┼───────────────┼─────────────────────┤
│ ecvt() │ Thread safety │ MT-Unsafe race:ecvt │
├─────────────────────────────────────────────────────────────────┼───────────────┼─────────────────────┤
│ fcvt() │ Thread safety │ MT-Unsafe race:fcvt │
└─────────────────────────────────────────────────────────────────┴───────────────┴─────────────────────┘
Description
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 point.
History
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).
Library
Standard C library (libc, -lc)
Name
ecvt, fcvt - convert a floating-point number to a string
Notes
Not all locales use a point as the radix character ("decimal point").
Return Value
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().
See Also
ecvt_r(3), gcvt(3), qecvt(3), setlocale(3), sprintf(3) Linux man-pages 6.9.1 2024-05-02 ecvt(3)
Standards
None.
Synopsis
#include<stdlib.h>[[deprecated]]char*ecvt(doublenumber,intndigits,int*restrictdecpt,int*restrictsign);[[deprecated]]char*fcvt(doublenumber,intndigits,int*restrictdecpt,int*restrictsign); Feature Test Macro Requirements for glibc (see feature_test_macros(7)): ecvt(), fcvt(): Since glibc 2.17 (_XOPEN_SOURCE >= 500 && ! (_POSIX_C_SOURCE >= 200809L)) || /* glibc >= 2.20 */ _DEFAULT_SOURCE || /* glibc <= 2.19 */ _SVID_SOURCE glibc 2.12 to glibc 2.16: (_XOPEN_SOURCE >= 500 && ! (_POSIX_C_SOURCE >= 200112L)) || _SVID_SOURCE Before glibc 2.12: _SVID_SOURCE || _XOPEN_SOURCE >= 500
