ECVT - convert float to string.

(Compatible with UNIX System V C)


char *ecvt();
str = ecvt(value,length,decimal,sign);


double value;
is the floating point value to be converted.
int length;
is the number of digits that should be in the string result.
char *str;
is a string of ASCII digits ending in the usual '\0'. This string does NOT contain a sign or a decimal point. For example, if "value" is -123.45, "str" is the string "12345". The first digit is non-zero (unless "value" is zero). Trailing zeroes are added, if necessary, to pad the number out to a length of "length". If "length" is less than the number of digits needed to represent "value", the result will be rounded.
int *decimal;
points to storage for an integer. "ecvt" fills this integer with the number of digits in "str" that precede the decimal point. For example, if "value" is 123.45, "ecvt" will assign 3 to "*decimal". This number can be negative if the decimal point precedes the digits. For example, if "value" is .00123, "ecvt" will assign -2 to "*decimal".
int *sign;
points to storage for an integer. "ecvt" fills this integer with zero if "value" is positive or zero, and with a non-zero number if "value" is negative.


The "ecvt" function converts a floating point number into a string of digits. The sign and the position of the decimal point are indicated with values filled into "*sign" and "*decimal" point, respectively.

Below, we give some examples. In all cases, "length" is assumed to be 5.

 value      str     *decimal     *sign
 -----      ---     --------     -----
1.23456   "12346"      1          zero
-344.10   "34410"      3        non-zero
0.12345   "12345"      0          zero
0.06890   "68900"     -1          zero


This function comes from UNIX System V, where it was used as part of the implementation of the "printf" "%e" format specifier. On this system, however, it has nothing to do with "%e", and therefore "ecvt" and "printf" may differ on the way they convert some floating point numbers into strings.

See Also:

expl c lib fcvt

expl c lib sprintf

Copyright © 1996, Thinkage Ltd.