1.\" Copyright (c) 1990, 1991, 1993 2.\" The Regents of the University of California. All rights reserved. 3.\" 4.\" This code is derived from software contributed to Berkeley by 5.\" the American National Standards Committee X3, on Information 6.\" Processing Systems. 7.\" 8.\" Redistribution and use in source and binary forms, with or without 9.\" modification, are permitted provided that the following conditions 10.\" are met: 11.\" 1. Redistributions of source code must retain the above copyright 12.\" notice, this list of conditions and the following disclaimer. 13.\" 2. Redistributions in binary form must reproduce the above copyright 14.\" notice, this list of conditions and the following disclaimer in the 15.\" documentation and/or other materials provided with the distribution. 16.\" 4. Neither the name of the University nor the names of its contributors 17.\" may be used to endorse or promote products derived from this software 18.\" without specific prior written permission. 19.\" 20.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 21.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 24.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 26.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 27.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 28.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 29.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 30.\" SUCH DAMAGE. 31.\" 32.\" @(#)strtod.3 8.1 (Berkeley) 6/4/93 33.\" $FreeBSD$ 34.\" 35.Dd March 2, 2003 36.Dt STRTOD 3 37.Os 38.Sh NAME 39.Nm strtod , strtof , strtold 40.Nd convert 41.Tn ASCII 42string to floating point 43.Sh LIBRARY 44.Lb libc 45.Sh SYNOPSIS 46.In stdlib.h 47.Ft double 48.Fn strtod "const char * restrict nptr" "char ** restrict endptr" 49.Ft float 50.Fn strtof "const char * restrict nptr" "char ** restrict endptr" 51.Ft "long double" 52.Fn strtold "const char * restrict nptr" "char ** restrict endptr" 53.Sh DESCRIPTION 54These conversion 55functions convert the initial portion of the string 56pointed to by 57.Fa nptr 58to 59.Vt double , 60.Vt float , 61and 62.Vt "long double" 63representation, respectively. 64.Pp 65The expected form of the string is an optional plus (``+'') or minus 66sign (``\-'') followed by either: 67.Bl -bullet 68.It 69a decimal significand consisting of a sequence of decimal digits 70optionally containing a decimal-point character, or 71.It 72a hexadecimal significand consisting of a ``0X'' or ``0x'' followed 73by a sequence of hexadecimal digits optionally containing a 74decimal-point character. 75.El 76.Pp 77In both cases, the significand may be optionally followed by an 78exponent. 79An exponent consists of an ``E'' or ``e'' (for decimal 80constants) or a ``P'' or ``p'' (for hexadecimal constants), 81followed by an optional plus or minus sign, followed by a 82sequence of decimal digits. 83For decimal constants, the exponent indicates the power of 10 by 84which the significand should be scaled. 85For hexadecimal constants, the scaling is instead done by powers 86of 2. 87.Pp 88Alternatively, if the portion of the string following the optional 89plus or minus sign begins with ``INFINITY'' or ``NAN'', ignoring 90case, it is interpreted as an infinity or a quiet NaN, respectively. 91.Pp 92In any of the above cases, leading white-space characters in the 93string (as defined by the 94.Xr isspace 3 95function) are skipped. 96The decimal point 97character is defined in the program's locale (category 98.Dv LC_NUMERIC ) . 99.Sh RETURN VALUES 100The 101.Fn strtod , 102.Fn strtof , 103and 104.Fn strtold 105functions return the converted value, if any. 106.Pp 107If 108.Fa endptr 109is not 110.Dv NULL , 111a pointer to the character after the last character used 112in the conversion is stored in the location referenced by 113.Fa endptr . 114.Pp 115If no conversion is performed, zero is returned and the value of 116.Fa nptr 117is stored in the location referenced by 118.Fa endptr . 119.Pp 120If the correct value would cause overflow, plus or minus 121.Dv HUGE_VAL , 122.Dv HUGE_VALF , 123or 124.Dv HUGE_VALL 125is returned (according to the sign and type of the return value), and 126.Er ERANGE 127is stored in 128.Va errno . 129If the correct value would cause underflow, zero is 130returned and 131.Er ERANGE 132is stored in 133.Va errno . 134.Sh ERRORS 135.Bl -tag -width Er 136.It Bq Er ERANGE 137Overflow or underflow occurred. 138.El 139.Sh SEE ALSO 140.Xr atof 3 , 141.Xr atoi 3 , 142.Xr atol 3 , 143.Xr strtol 3 , 144.Xr strtoul 3 , 145.Xr wcstod 3 146.Sh STANDARDS 147The 148.Fn strtod 149function 150conforms to 151.St -isoC-99 , 152with the exception of the bug noted below. 153.Sh AUTHORS 154The author of this software is 155.An David M. Gay . 156.Pp 157.Bd -literal 158Copyright (c) 1998 by Lucent Technologies 159All Rights Reserved 160 161Permission to use, copy, modify, and distribute this software and 162its documentation for any purpose and without fee is hereby 163granted, provided that the above copyright notice appear in all 164copies and that both that the copyright notice and this 165permission notice and warranty disclaimer appear in supporting 166documentation, and that the name of Lucent or any of its entities 167not be used in advertising or publicity pertaining to 168distribution of the software without specific, written prior 169permission. 170 171LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, 172INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. 173IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY 174SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 175WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER 176IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, 177ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF 178THIS SOFTWARE. 179.Ed 180.Sh BUGS 181These routines do not recognize the C99 ``NaN(...)'' syntax. 182