Spec-Zone.ru › C

atof

Определено в заголовочном файле <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.

Параметры

str - указатель на интерпретируемую байтовую строку с завершающим нулевым символом

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

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

Примечания

Название означает «ASCII в число с плавающей точкой».

Пример

#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

См. также

strtofstrtodstrtold
(C99)(C99)
преобразует байтовую строку в значение с плавающей точкой
(функция)
Документация по C++ для atof

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/c/string/byte/atof

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API