atof
Определено в заголовочном файле <stdlib.h> | ||
|---|---|---|
double atof( const char* str ); |
Интерпретирует значение с плавающей точкой в байтовой строке, на которую указывает str.
Функция отбрасывает все пробельные символы (определяемые с помощью isspace), пока не встретит первый непробельный символ. Затем она считывает максимально возможное количество символов, образующих корректное представление числа с плавающей точкой, и преобразует их в значение с плавающей точкой. Корректное значение с плавающей точкой может иметь один из следующих видов:
- десятичное выражение с плавающей точкой. Оно состоит из следующих частей:
- (необязательно) знак плюс или минус
- непустая последовательность десятичных цифр, которая может содержать символ десятичной точки (определяемый текущей локалью C) (задаёт значащую часть)
-
(необязательно)
eилиE, за которым следует необязательный знак минус или плюс и непустая последовательность десятичных цифр (задаёт показатель степени с основанием 10)
| (начиная с 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
См. также
|
(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