_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
имеет NULL
count
значение 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