Namespaces
Variants

atof

From cppreference.net
< c ‎ | string ‎ | byte
Определено в заголовочном файле <stdlib.h>
double atof ( const char * str ) ;

Интерпретирует значение с плавающей запятой в строке байтов, на которую указывает str .

Функция отбрасывает любые пробельные символы (определяемые с помощью isspace ) до тех пор, пока не будет найден первый непробельный символ. Затем она принимает максимально возможное количество символов, формирующих корректное представление числа с плавающей точкой, и преобразует их в значение с плавающей точкой. Корректное значение с плавающей точкой может быть одним из следующих:

  • десятичное выражение с плавающей точкой. Оно состоит из следующих частей:
  • (необязательно) знак плюс или минус
  • непустая последовательность десятичных цифр, возможно содержащая символ десятичной точки (как определено текущей локалью C ) (определяет мантиссу)
  • (необязательно) e или E с последующим необязательным знаком минус или плюс и непустой последовательностью десятичных цифр (определяет экспоненту по основанию 10 )
  • шестнадцатеричное выражение с плавающей точкой. Состоит из следующих частей:
  • (опционально) знак плюс или минус
  • 0x или 0X
  • непустая последовательность шестнадцатеричных цифр, опционально содержащая символ десятичной точки (определяется текущей локалью C) (определяет мантиссу)
  • (опционально) p или P с последующим опциональным знаком минус или плюс и непустой последовательностью десятичных цифр (определяет экспоненту по основанию 2 )
  • выражение бесконечности. Состоит из следующих частей:
  • (опционально) знак плюс или минус
  • INF или INFINITY без учета регистра
  • выражение не-числа. Состоит из следующих частей:
  • (опционально) знак плюс или минус
  • NAN или NAN( char_sequence  ) без учета регистра для части NAN . char_sequence может содержать только цифры, латинские буквы и подчеркивания. Результатом является тихое значение NaN с плавающей точкой.
(начиная с C99)
  • любое другое выражение, которое может быть принято текущей установленной C locale .

Содержание

Параметры

str - указатель на нуль-терминированную байтовую строку для интерпретации

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

double значение, соответствующее содержимому str при успешном выполнении. Если преобразованное значение выходит за пределы диапазона возвращаемого типа, возвращаемое значение не определено. Если преобразование не может быть выполнено, 0.0 возвращается.

Примечания

Название расшифровывается как «ASCII to float».

Пример

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    printf("%g\n", atof("  -0.0000000123junk"));
    printf("%g\n", atof("0.012"));
    printf("%g\n", atof("15e16"));
    printf("%g\n", atof("-0x1afp-2"));
    printf("%g\n", atof("inF"));
    printf("%g\n", atof("Nan"));
    printf("%g\n", atof("1.0e+309"));   // UB: out of range of double
    printf("%g\n", atof("0.0"));
    printf("%g\n", atof("junk"));       // no conversion can be performed
}

Возможный вывод:

-1.23e-08
0.012
1.5e+17
-107.75
inf
nan
inf
0
0

Ссылки

  • Стандарт C23 (ISO/IEC 9899:2024):
  • 7.22.1.1 Функция atof (стр.: TBD)
  • Стандарт C17 (ISO/IEC 9899:2018):
  • 7.22.1.1 Функция atof (стр.: TBD)
  • Стандарт C11 (ISO/IEC 9899:2011):
  • 7.22.1.1 Функция atof (стр. 341)
  • Стандарт C99 (ISO/IEC 9899:1999):
  • 7.20.1.1 Функция atof (стр: 307)
  • Стандарт C89/C90 (ISO/IEC 9899:1990):
  • 4.10.1.1 Функция atof

Смотрите также

преобразует строку байтов в значение с плавающей запятой
(функция)