STRTOD(3)

NOME
strtod, strtof, strtold - converte seqüencia ASCII para um número em ponto flutuante

SINÓPSE
#include <stdlib.h>

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

DESCRIÇÃO
As funções strtod, strtof, e strtold convertem a porção inicial da seqüencia apontada por nptr para um duplo, ponto flutuante, e um duplo longo respectivamente. A forma esperada da (a parte inicial da) seqüencia é espaço em branco opcional na frente como reconhecido por isspace(3), um sinal opcional de mais ('+') ou de menos ('-') e então (i) um número decimal, ou (ii) um número hexadecimal, ou (iii) um número infinito, ou (iv) um 'não é número' (NaN).

Um número decimal consiste de um seqüencia não vazia de dígitos decimais possivelmente contendo um caractere base (ponto decimal, dependente da localização, usualmente '.'), opcionalmente seguido por um expoente decimal. Um expoente decimal consiste de um 'E' ou 'e', seguido por um sinal opcional de mais ou de menos, seguido por uma seqüência não vazia de dígitos decimais, e multiplicações indicadas por potência de 10.

Um número decimal consiste de um '0x' ou '0X' seguida por uma seqüencia não vazia de dígitos hexadecimais possivelmente contendo um caractere base, opcionalmente seguido por um expoente binário. Um expoente binário consiste de um 'P' ou 'p', seguido por um sinal opcional de mais ou de menos, seguido por uma seqüência não vazia de dígitos decimais, e multiplicações indicadas por potência de 2. No mínimo um dos caracteres bases e expoentes binários devem estar presentes.

Um infinito é um 'INF' ou 'INFINITY', indiferentemente do caso.

Um NaN é um 'NaN' (indiferentemente do caso) opcionalmente seguido por '(', uma seqüencia de caracteres, seguida por ')'. A seqüencia de caracteres específica em uma implementação dependente segue o tipo de 'NaN'.

VALORES RETORNADOS
Estas funções retornam o valor convertido. Se endptr não é NULO, um ponteiro para o caracter depois do último caractere usado na conversão é armazenado no local referenciado por endptr. Se nenhuma conversão for efetuada, zero é retornado e o valor de nptr é armazenado no local referenciado por endptr. Se o valor correto era muito grande para ser representado, mais ou menos HUGE_VAL (HUGE_VALF, HUGE_VALL) é retornado (conforme o sinal do valor), e ERANGE é armazenado em errno. Se o valor correto era muito pequeno para ser representado, zero é retornado e ERANGE é armazenado em errno.

ERROS

ERANGE
    Estouro de representação para um número muito grande ou muito pequeno.

DE ACORDO COM
ANSI C descreve strtod, C99 descreve as outras duas funções.

VEJA TAMBÉM
atof(3), atoi(3), atol(3), strtol(3), strtoul(3).

TRADUZIDO POR LDP-BR em 15/03/2001.

  Tradução:
Marcelo M. de Abreu <mmabreu@terra.com.br>

  Revisão.:
André Luiz Fassone <lonely_wolf@ig.com.br>