Linux / Unix Command: strtof |

Command Library |

## NAME

strtod, strtof, strtold - convert ASCII string to floating point number## SYNOPSIS

**#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***);**

## DESCRIPTION

The**strtod**,

**strtof**, and

**strtold**functions convert the initial portion of the string pointed to by

*nptr*to

**double**,

**float**, and

**long double**representation, respectively.

The expected form of the (initial portion of the) string is
optional leading white space as recognized by *isspace*(3),
an optional plus (``+'') or minus sign (``-'') and then either
(i) a decimal number, or (ii) a hexadecimal number,
or (iii) an infinity, or (iv) a NAN (not-a-number).

A
*decimal number*
consists of a nonempty sequence of decimal digits
possibly containing a radix character (decimal point, locale dependent,
usually ``.''), optionally followed by a decimal exponent. A
decimal exponent consists of an ``E'' or ``e'', followed by an
optional plus or minus sign, followed by a non-empty sequence of
decimal digits, and indicates multiplication by a power of 10.

A
*hexadecimal number*
consists of a ``0x'' or ``0X'' followed by a nonempty sequence of
hexadecimal digits possibly containing a radix character,
optionally followed by a binary exponent. A binary exponent
consists of a ``P'' or ``p'', followed by an optional
plus or minus sign, followed by a non-empty sequence of
decimal digits, and indicates multiplication by a power of 2.
At least one of radix character and binary exponent must be present.

An
*infinity*
is either ``INF'' or ``INFINITY'', disregarding case.

A
*NAN*
is ``NAN'' (disregarding case) optionally followed by `(',
a sequence of characters, followed by ')'.
The character string specifies in an implementation-dependent
way the type of NAN.

## RETURN VALUE

These functions return the converted value, if any.
If
*endptr*
is not
**NULL**,
a pointer to the character after the last character used in the conversion
is stored in the location referenced by
*endptr*.

If no conversion is performed, zero is returned and the value of
*nptr*
is stored in the location referenced by
*endptr*.

If the correct value would cause overflow, plus or minus
**HUGE_VAL**
(**HUGE_VALF**,
**HUGE_VALL**)
is returned (according to the sign of the value), and
**ERANGE**
is stored in
*errno*.
If the correct value would cause underflow, zero is
returned and
**ERANGE**
is stored in
*errno*.

## ERRORS

**ERANGE**- Overflow or underflow occurred.

## CONFORMING TO

ANSI C describes**strtod**, C99 describes the other two functions.

## SEE ALSO

**atof**(3),

**atoi**(3),

**atol**(3),

**strtol**(3),

**strtoul**(3)

**Important:**
Use the *man* command (*% man*) to see how a command is used on your
particular computer.