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.\" 3. 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.\" 34.Dd May 11, 2010 35.Dt STRTOD 3 36.Os 37.Sh NAME 38.Nm strtod , strtof , strtold 39.Nd convert 40.Tn ASCII 41string to floating point 42.Sh LIBRARY 43.Lb libc 44.Sh SYNOPSIS 45.In stdlib.h 46.Ft double 47.Fn strtod "const char * restrict nptr" "char ** restrict endptr" 48.Ft float 49.Fn strtof "const char * restrict nptr" "char ** restrict endptr" 50.Ft "long double" 51.Fn strtold "const char * restrict nptr" "char ** restrict endptr" 52.Sh DESCRIPTION 53These conversion 54functions convert the initial portion of the string 55pointed to by 56.Fa nptr 57to 58.Vt double , 59.Vt float , 60and 61.Vt "long double" 62representation, respectively. 63.Pp 64The expected form of the string is an optional plus (``+'') or minus 65sign (``\-'') followed by either: 66.Bl -bullet 67.It 68a decimal significand consisting of a sequence of decimal digits 69optionally containing a decimal-point character, or 70.It 71a hexadecimal significand consisting of a ``0X'' or ``0x'' followed 72by a sequence of hexadecimal digits optionally containing a 73decimal-point character. 74.El 75.Pp 76In both cases, the significand may be optionally followed by an 77exponent. 78An exponent consists of an ``E'' or ``e'' (for decimal 79constants) or a ``P'' or ``p'' (for hexadecimal constants), 80followed by an optional plus or minus sign, followed by a 81sequence of decimal digits. 82For decimal constants, the exponent indicates the power of 10 by 83which the significand should be scaled. 84For hexadecimal constants, the scaling is instead done by powers 85of 2. 86.Pp 87Alternatively, if the portion of the string following the optional 88plus or minus sign begins with 89.Dq INFINITY 90or 91.Dq NAN , 92ignoring case, it is interpreted as an infinity or a quiet \*(Na, 93respectively. 94The syntax 95.Dq Xo Pf NAN( Ar "s" ) Xc , 96where 97.Ar s 98is an alphanumeric string, produces the same value as the call 99.Fo nan 100.Qq Ar s Ns 101.Fc 102(respectively, 103.Fo nanf 104.Qq Ar s Ns 105.Fc 106and 107.Fo nanl 108.Qq Ar s Ns 109.Fc . ) 110.Pp 111In any of the above cases, leading white-space characters in the 112string (as defined by the 113.Xr isspace 3 114function) are skipped. 115The decimal point 116character is defined in the program's locale (category 117.Dv LC_NUMERIC ) . 118.Sh RETURN VALUES 119The 120.Fn strtod , 121.Fn strtof , 122and 123.Fn strtold 124functions return the converted value, if any. 125.Pp 126If 127.Fa endptr 128is not 129.Dv NULL , 130a pointer to the character after the last character used 131in the conversion is stored in the location referenced by 132.Fa endptr . 133.Pp 134If no conversion is performed, zero is returned and the value of 135.Fa nptr 136is stored in the location referenced by 137.Fa endptr . 138.Pp 139If the correct value would cause overflow, plus or minus 140.Dv HUGE_VAL , 141.Dv HUGE_VALF , 142or 143.Dv HUGE_VALL 144is returned (according to the sign and type of the return value), and 145.Er ERANGE 146is stored in 147.Va errno . 148If the correct value would cause underflow, zero is 149returned and 150.Er ERANGE 151is stored in 152.Va errno . 153.Sh ERRORS 154.Bl -tag -width Er 155.It Bq Er ERANGE 156Overflow or underflow occurred. 157.El 158.Sh SEE ALSO 159.Xr atof 3 , 160.Xr atoi 3 , 161.Xr atol 3 , 162.Xr nan 3 , 163.Xr strtol 3 , 164.Xr strtoul 3 , 165.Xr wcstod 3 166.Sh STANDARDS 167The 168.Fn strtod 169function 170conforms to 171.St -isoC-99 . 172.Sh AUTHORS 173The author of this software is 174.An David M. Gay . 175.Bd -literal 176Copyright (c) 1998 by Lucent Technologies 177All Rights Reserved 178 179Permission to use, copy, modify, and distribute this software and 180its documentation for any purpose and without fee is hereby 181granted, provided that the above copyright notice appear in all 182copies and that both that the copyright notice and this 183permission notice and warranty disclaimer appear in supporting 184documentation, and that the name of Lucent or any of its entities 185not be used in advertising or publicity pertaining to 186distribution of the software without specific, written prior 187permission. 188 189LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, 190INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. 191IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY 192SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 193WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER 194IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, 195ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF 196THIS SOFTWARE. 197.Ed 198