Scroll to navigation

ECVT(3) Руководство программиста Linux ECVT(3)

ИМЯ

ecvt, fcvt - преобразование числа с плавающей точкой в строку

ОБЗОР

#include <stdlib.h>

char *ecvt(double number, int ndigits, int *decpt, int *sign);

char *fcvt(double number, int ndigits, int *decpt, int *sign);


Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

ecvt(), fcvt():

Начиная с glibc 2.12:
_SVID_SOURCE ||

(_XOPEN_SOURCE >= 500 ||
_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED) &&
!(_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600)
До glibc 2.12:
_SVID_SOURCE || _XOPEN_SOURCE >= 500 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED

ОПИСАНИЕ

Функция ecvt() преобразует number в строку с завершающим null-символом ndigits цифр (количество ndigits усекается до пределов точности, определённых форматом double) и возвращает указатель на строку. Самый старший разряд полученного числа не будет равен нулю, если только само число number не равно нулю. Самый младший разряд округляется. Строка сама по себе не содержит разделителя целой и дробной части, однако позиция разделителя относительно начала строки сохраняется в *decpt. Отрицательное значение *decpt означает, что разделитель находится слева от начала строки. Если число number отрицательное, то *sign устанавливается в ненулевое значение, иначе равно нулю. Если number равно нулю, то не определено, равен ли *decpt 0 или 1.

Функция fcvt() аналогична ecvt(), за исключением того, что ndigits указывает число цифр после разделителя.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

Обе функции, ecvt() и fcvt(), возвращают указатель на статическую строку, содержащую ASCII-представление number. Статическая строка перезаписывается каждый раз при вызове ecvt() или fcvt().

СООТВЕТСТВИЕ СТАНДАРТАМ

SVr2; отмечены как УНАСЛЕДОВАННЫЕ в POSIX.1-2001. В POSIX.1-2008 спецификации ecvt() и fcvt() удалены, вместо них рекомендуется использовать sprintf(3) (однако snprintf(3) может быть предпочтительнее).

ЗАМЕЧАНИЯ

В Linux libc4 и libc5 тип ndigits указан как size_t. Не все локали используют точку в качестве разделителя целой и дробной части («десятичная точка»).

СМОТРИТЕ ТАКЖЕ

ecvt_r(3), gcvt(3), qecvt(3), setlocale(3), sprintf(3)

2010-09-20