1.\" $NetBSD: strtod.3,v 1.15 2003/08/07 16:43:44 agc Exp $ 2.\" 3.\" Copyright (c) 1990, 1991, 1993 4.\" The Regents of the University of California. All rights reserved. 5.\" 6.\" This code is derived from software contributed to Berkeley by 7.\" the American National Standards Committee X3, on Information 8.\" Processing Systems. 9.\" 10.\" Redistribution and use in source and binary forms, with or without 11.\" modification, are permitted provided that the following conditions 12.\" are met: 13.\" 1. Redistributions of source code must retain the above copyright 14.\" notice, this list of conditions and the following disclaimer. 15.\" 2. Redistributions in binary form must reproduce the above copyright 16.\" notice, this list of conditions and the following disclaimer in the 17.\" documentation and/or other materials provided with the distribution. 18.\" 3. Neither the name of the University nor the names of its contributors 19.\" may be used to endorse or promote products derived from this software 20.\" without specific prior written permission. 21.\" 22.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 23.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 24.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 25.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 26.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 27.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 28.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 29.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 31.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 32.\" SUCH DAMAGE. 33.\" 34.\" from: @(#)strtod.3 8.1 (Berkeley) 6/4/93 35.\" 36.Dd January 28, 2002 37.Dt STRTOD 3 38.Os 39.Sh NAME 40.Nm strtod 41.Nd convert 42.Tn ASCII 43string to double 44.Sh LIBRARY 45.Lb libc 46.Sh SYNOPSIS 47.In stdlib.h 48.Ft double 49.Fn strtod "const char * restrict nptr" "char ** restrict endptr" 50.Sh DESCRIPTION 51The 52.Fn strtod 53function converts the initial portion of the string 54pointed to by 55.Fa nptr 56to 57.Em double 58representation. 59.Pp 60The expected form of the string is an optional plus (``+'') or minus 61sign (``\-'') followed by one of the following: 62.Bl -dash 63.It 64a sequence of digits optionally containing 65a decimal-point character, optionally followed by an exponent. 66An exponent consists of an ``E'' or ``e'', followed by an optional plus 67or minus sign, followed by a sequence of digits. 68.It 69one of 70.Li INF 71or 72.Li INFINITY , 73ignoring case. 74.It 75one of 76.Li NAN 77or 78.Li NAN(n-char-sequence-opt) , 79ignoring case. 80This implementation currently does not interpret such a sequence. 81.El 82.Pp 83Leading white-space characters in the string (as defined by the 84.Xr isspace 3 85function) are skipped. 86.Sh RETURN VALUES 87The 88.Fn strtod 89function returns the converted value, if any. 90.Pp 91A character sequence 92.Li INF 93or 94.Li INFINITY 95is converted to \*(If, 96if supported, else to the largest finite floating-point number representable 97on the machine (i.e., 98.Tn VAX ) . 99.Pp 100A character sequence 101.Li NAN 102or 103.Li NAN(n-char-sequence-opt) 104is converted to a quiet \*(Na, if supported, else to a 105.Dq reserved operand 106for that machine (i.e., 107.Tn VAX ) . 108.Pp 109If 110.Fa endptr 111is not 112.Dv NULL , 113a pointer to the character after the last character used 114in the conversion is stored in the location referenced by 115.Fa endptr . 116.Pp 117If no conversion is performed, zero is returned and the value of 118.Fa nptr 119is stored in the location referenced by 120.Fa endptr . 121.Pp 122If the correct value would cause overflow, plus or minus 123.Dv HUGE_VAL 124is returned (according to the sign of the value), and 125.Dv ERANGE 126is stored in 127.Va errno . 128If the correct value would cause underflow, zero is 129returned and 130.Dv ERANGE 131is stored in 132.Va errno . 133.Sh ERRORS 134.Bl -tag -width Er 135.It Bq Er ERANGE 136Overflow or underflow occurred. 137.El 138.Sh SEE ALSO 139.Xr atof 3 , 140.Xr atoi 3 , 141.Xr atol 3 , 142.Xr math 3 , 143.Xr strtol 3 , 144.Xr strtoul 3 145.Sh STANDARDS 146The 147.Fn strtod 148function 149conforms to 150.St -ansiC . 151