Developer's Daily | Unix by Example |
main | java | perl | unix | dev directory | web log |
ecvt, fcvt ? convert a floating-point number to a string. |
#include <stdlib.h> char *ecvt(double number, int ndigits, int *decpt, int *sign); char *fcvt(double number, int ndigits, int *decpt, int *sign); |
The ecvt() function converts number to a null-terminated string of ndigits digits (where ndigits is reduced to an 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 non-zero value, otherwise it’s 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. |
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(). |
These functions are obsolete. Instead, sprintf() is recommended. Linux libc4 and libc5 specified the type of ndigits as size_t. Not all locales use a point as the radix character (‘decimal point’). |
SysVR2, XPG2 |
gcvt(3), setlocale(3), sprintf(3) |