NAME

strtod, strtof, strtold - ASCII 문자열을 부동소수점수로 변환하기

SYNOPSIS

#include <stdlib.h>

double strtod(const char *restrict nptr, char **restrict endptr);
float strtof(const char *restrict nptr, char **restrict endptr);
long double strtold(const char *restrict nptr, char **restrict endptr);

glibc 기능 확인 매크로 요건 (feature_test_macros(7) 참고):

strtof(), strtold():
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L

DESCRIPTION

strtod(), strtof(), strtold() 함수는 nptr이 가리키는 문자열의 처음 부분을 각각 double, float, long double 표현으로 변환한다.

기대하는 문자열 (시작 부분의) 형식은 선두의 선택적인 공백(isspace(3)로 인식), 선택적인 양수('+') 또는 음수('-') 부호, 그리고 (i) 10진수, (ii) 16진수, (iii) 무한대, (iv) NAN (not-a-number) 중 하나가 오는 것이다.

10진수는 소수점(로캘에 따라 다르지만 보통 '.')을 포함할 수도 있는 10진수 숫자로 된 비어 있지 않은 열이며, 선택적으로 10진 지수가 따라온다. 10진 지수는 'E' 또는 'e'에 이어 선택적으로 양수 또는 음수 부호가 오고 이어서 10진법 숫자로 된 비어 있지 않은 열이 오며, 10의 거듭제곱으로 곱한다는 뜻이다.

16진수는 "0x" 또는 "0X"에 이어 소수점을 포함할 수도 있는 16진수 숫자로 된 비어 있지 않은 열이 오고, 선택적으로 2진 지수가 따라온다. 2진 지수는 'P' 또는 'p'에 이어 선택적으로 양수 또는 음수 부호가 오고 이어서 10진법 숫자로 된 비어 있지 않은 열이 오며, 2의 거듭제곱으로 곱한다는 뜻이다. 소수점과 2진 지수 중 하나는 있어야 한다.

무한대는 "INF" 또는 "INFINITY"이며 대소문자 구별이 없다.

NAN는 "NAN"(대소문자 구별 없음)에 이어 선택적으로 문자열 (n-char-sequence)가 오는 것이다. n-char-sequence는 구현별로 다른 방식으로 NAN의 종류를 나타낸다. (NOTES 참고.)

RETURN VALUE

이 함수들은 변환한 값이 있으면 그 값을 반환한다.

endptr이 NULL이 아니면 변환에 쓴 마지막 문자 다음 문자에 대한 포인터를 endptr이 가리키는 위치에 저장한다.

어떤 변환도 수행하지 않았으면 0을 반환하며 (endptr이 널이 아니면) nptr의 값을 endptr이 가리키는 위치에 저장한다.

값이 오버플로를 일으키게 되면 (그 값의 반환 타입과 부호에 따라) 양수 또는 음수인 HUGE_VAL, HUGE_VALF, HUGE_VALL을 반환하며 errnoERANGE를 저장한다.

값이 언더플로를 일으키게 되면 크기가 DBL_MIN, FLT_MIN, LDBL_MIN보다 크지 않은 값을 반환하며 errnoERANGE를 저장한다.

ERRORS

ERANGE
오버플로나 언더플로가 발생했다.

ATTRIBUTES

이 절에서 사용하는 용어들에 대한 설명은 attributes(7)를 보라.

인터페이스 속성
strtod(), strtof(), strtold() 스레드 안전성 MT-Safe locale

CONFORMING TO

POSIX.1-2001, POSIX.1-2008, C99.

strtod()는 C89에도 기술되어 있다.

NOTES

성공과 실패 어느 쪽에서도 적법하게 0을 반환할 수 있으므로 호출 프로그램에서는 호출 전에 errno를 0으로 설정하고서 호출 후에 errno가 0 아닌 값인지 검사해서 오류가 발생했는지 확인해야 한다.

glibc 구현에서는 "NAN" 뒤에 선택적으로 오는 n-char-sequence를 정수로 해석하여 (선택적으로 앞에 '0'이나 '0x'를 붙여서 8진법이나 16진법 선택) 반환 값의 가수 부분에 집어넣는다.

EXAMPLES

strtol(3) 매뉴얼 페이지의 예를 참고하라. 이 매뉴얼 페이지에서 기술하는 함수들과 사용 방식이 비슷하다.

SEE ALSO

atof(3), atoi(3), atol(3), nan(3), nanf(3), nanl(3), strfromd(3), strtol(3), strtoul(3)


2021-03-22