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


_fcvt

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

Синтаксис

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

Параметры

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

count
Число разрядов после десятичной запятой.

dec
Указатель на сохраненную позицию десятичной запятой.

sign
Указатель на сохраненный индикатор знака.

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

_fcvt возвращает указатель на строку цифр по NULL ошибке.

Замечания

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

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

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

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

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

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

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

Требования

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

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

Пример

// crt_fcvt.c
// compile with: /W3
// This program converts the constant
// 3.1415926535 to a string and sets the pointer
// buffer to point to that string.

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

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

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

См. также

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