Поделиться через


_ecvt

Преобразует число double в строку. Доступна более безопасная версия этой функции; см. раздел _ecvt_s.

Синтаксис

char *_ecvt(
   double value,
   int count,
   int *dec,
   int *sign
);

Параметры

value
Число, которое требуется преобразовать.

count
Сохраненное число разрядов.

dec
Сохраненная позиция десятичной запятой.

sign
Знак преобразованного числа.

Возвращаемое значение

_ecvt возвращает указатель на строку цифр; NULL Значение , если произошла ошибка.

Замечания

Функция _ecvt преобразует число с плавающей запятой в строку символов. Параметр value представляет собой преобразуемое число с плавающей запятой. Эта функция сохраняет до count разрядов параметра value в виде строки и добавляет нуль-символ ("\0"). Если количество разрядов в value превышает count, младший разряд округляется. Если количество разрядов меньше count, строка дополняется нулями.

Общее число цифр, возвращаемых _ecvt не превышает _CVTBUFSIZE.

В строке сохраняются только цифры. Положение десятичной запятой и знак value можно получить из параметров dec и sign после вызова. Параметр dec указывает на целочисленное значение, отражающее положение десятичной запятой относительно начала строки. Ноль или отрицательное целое число означают, что десятичная запятая располагается слева от первой цифры. Параметр sign указывает на целое число, определяющее знак преобразуемого числа. Если целочисленное значение равно 0, число является положительным. В противном случае число будет отрицательным.

Различие между функциями _ecvt и _fcvt заключается в интерпретации параметра count. Функция _ecvt интерпретирует параметр count как общее число цифр в выходной строке, а функция _fcvt интерпретирует параметр count как количество цифр после десятичной запятой.

_ecvt и _fcvt используют для преобразования один статически выделенный буфер. Каждый вызов одной из этих подпрограмм уничтожает результат предыдущего вызова.

Эта функция проверяет свои параметры. Если dec или sign имеет NULLcount значение 0, вызывается обработчик недопустимых параметров, как описано в разделе "Проверка параметров". Если выполнение разрешено продолжать, errno для этого задано значение EINVAL и NULL возвращается.

По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.

Требования

Function Обязательный заголовок
_ecvt <stdlib.h>

Дополнительные сведения о совместимости см. в разделе Совместимость.

Пример

// crt_ecvt.c
// compile with: /W3
// This program uses _ecvt to convert a
// floating-point number to a character string.

#include <stdlib.h>
#include <stdio.h>

int main( void )
{
   int     decimal,   sign;
   char    *buffer;
   int     precision = 10;
   double  source = 3.1415926535;

   buffer = _ecvt( source, precision, &decimal, &sign ); // C4996
   // Note: _ecvt is deprecated; consider using _ecvt_s instead
   printf( "source: %2.10f   buffer: '%s'  decimal: %d  sign: %d\n",
           source, buffer, decimal, sign );
}
source: 3.1415926535   buffer: '3141592654'  decimal: 1  sign: 0

См. также

Преобразование данных
Поддержка математических и плавающих точек
atof, , _atof_l_wtof_wtof_l
_fcvt
_gcvt