Converts a floating-point number to a string.

#include <stdlib.h>

char *ecvt (Value,NumberOfDigits,DecimalPointer,Sign;)doubleValue;intNumberOfDigits,*DecimalPointer, *Sign;

char *fcvt (Value,NumberOfDigits,DecimalPointer,Sign;)doubleValue;intNumberOfDigits,*DecimalPointer, *Sign;

char *gcvt (Value,NumberOfDigits,Buffer;)doubleValue;intNumberOfDigits;char *Buffer;

The **ecvt**, **fcvt**, and **gcvt** subroutines convert floating-point numbers to strings.

The **ecvt** subroutine converts the *Value* parameter to a null-terminated string and returns a pointer to it. The *NumberOfDigits* parameter specifies the number of digits in the string. The low-order digit is rounded according to the current rounding mode. The** ecvt** subroutine sets the integer pointed to by the* DecimalPointer* parameter to the position of the decimal point relative to the beginning of the string. (A negative number means the decimal point is to the left of the digits given in the string.) The decimal point itself is not included in the string. The **ecvt** subroutine also sets the integer pointed to by the *Sign* parameter to a nonzero value if the *Value* parameter is negative and sets a value of 0 otherwise.

The **fcvt** subroutine operates identically to the **ecvt **subroutine, except that the correct digit is rounded for C or FORTRAN F-format output of the number of digits specified by the *NumberOfDigits *parameter.

Note:In the F-format, theNumberOfDigitsparameter is the number of digits desired after the decimal point. Large numbers produce a long string of digits before the decimal point, and thenNumberOfDigitsdigits after the decimal point. Generally, thegcvtandecvtsubroutines are more useful for large numbers.

The **gcvt** subroutine converts the *Value* parameter to a null-terminated string, stores it in the array pointed to by the* Buffer* parameter, and then returns the *Buffer *parameter. The **gcvt** subroutine attempts to produce a string of the *NumberOfDigits* parameter significant digits in FORTRAN F-format. If this is not possible, the E-format is used. The** gcvt** subroutine suppresses trailing zeros. The string is ready for printing, complete with minus sign, decimal point, or exponent, as appropriate. The radix character is determined by the current locale (see **setlocale** subroutine). If the **setlocale** subroutine has not been called successfully, the default locale, POSIX, is used. The default locale specifies a **. **(period) as the radix character. The **LC_NUMERIC **category determines the value of the radix character within the current locale.

The **ecvt**, **fcvt**, and **gcvt** subroutines represent the following special values that are specified in ANSI/IEEE standards 754-1985 and 854-1987 for floating-point arithmetic:

Quiet NaN |
Indicates a quiet not-a-number (NaNQ) |

Signalling NaN |
Indicates a signaling NaNS |

Infinity |
Indicates a INF value |

The sign associated with each of these values is stored in the *Sign* parameter.

Note:A value of 0 can be positive or negative. In the IEEE floating-point, zeros also have signs and set theSignparameter appropriately.

Attention:All three subroutines store the strings in a static area of memory whose contents are overwritten each time one of the subroutines is called.

These subroutines are part of Base Operating System (BOS) Runtime.

The **atof**,** strtod**, **atoff**, or** strtof** subroutine, **fp_read_rnd**, or** fp_swap_rnd** subroutine, **printf** subroutine, **scanf** subroutine.

Subroutines Overview in* AIX General Programming Concepts: Writing and Debugging Programs*.

*IEEE Standard for Binary Floating-Point Arithmetic* (ANSI/IEEE Standards 754-1985 and 854-1987).