convert double to <span class="Tn">ASCII</span> string

View versions (3)

INTERFACE

#include <stdlib.h>

char ecvt ( double value, int ndigit, int * restrict decpt, int * restrict sign ) char fcvt ( double value, int ndigit, int * restrict decpt, int * restrict sign ) char gcvt ( double value, int ndigit, char *buf )

DESCRIPTION

These functions are provided for compatibility with legacy code.

The ecvt, fcvt and gcvt functions convert the double precision floating-point number &#92;c value to a NUL-terminated ASCII string.

The ecvt function converts &#92;c value to a NUL-terminated string of exactly &#92;c 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 &#92;c 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 &#92;c 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 &#92;c value). If &#92;c value is zero, it is unspecified whether the integer pointed to by &#92;c 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 &#92;c 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 &#92;c ndigit specifies the number of digits after the decimal point (zero-padded as needed).

The gcvt function converts &#92;c value to a NUL-terminated string similar to the %g printf format specifier and stores the result in &#92;c buf. It produces &#92;c ndigit significant digits similar to the %f printf format specifier where possible. If &#92;c ndigit does allow sufficient precision, the result is stored in exponential notation similar to the %e printf format specifier. If &#92;c value is less than zero, &#92;c buf will be prefixed with a minus sign. A decimal point is included in the returned string if &#92;c value is not a whole number. Unlike the ecvt and fcvt functions, &#92;c buf is not zero-padded.

Example 1
Workings

\code #include <stdio.h> #include <stdlib.h> int main() { int decimal, sign; char *buffer = ecvt(3.1415926535, 11, &decimal, &sign); printf("pi = %c.%s
", buffer[0], buffer + 1); return 0; } \endcode

Solution

Output:

pi = 3.1415926535

RETURN VALUES

The ecvt, fcvt and gcvt functions return a NUL-terminated string representation of &#92;c value.

WARNINGS

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.

SEE ALSO

printf, strtod