]> git.ipfire.org Git - thirdparty/man-pages.git/blobdiff - man3/strtod.3
getaddrinfo.3: Fix off-by-one error in example client program
[thirdparty/man-pages.git] / man3 / strtod.3
index 5532fe8ee95f8b0a01c217e1efefbf813b80dca3..d3b6de005916258220518fe56136f252861211a8 100644 (file)
@@ -5,6 +5,7 @@
 .\" the American National Standards Committee X3, on Information
 .\" Processing Systems.
 .\"
+.\" %%%LICENSE_START(BSD_4_CLAUSE_UCB)
 .\" Redistribution and use in source and binary forms, with or without
 .\" modification, are permitted provided that the following conditions
 .\" are met:
@@ -32,6 +33,7 @@
 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
+.\" %%%LICENSE_END
 .\"
 .\"     @(#)strtod.3   5.3 (Berkeley) 6/29/91
 .\"
 .\"   (michael@cantor.informatik.rwth-aachen.de)
 .\" Added strof, strtold, aeb, 2001-06-07
 .\"
-.TH STRTOD 3 2001-06-07 "Linux" "Library functions"
+.TH STRTOD 3 2017-09-15 "Linux" "Linux Programmer's Manual"
 .SH NAME
-strtod, strtof, strtold \- convert ASCII string to floating point number
+strtod, strtof, strtold \- convert ASCII string to floating-point number
 .SH SYNOPSIS
 .B #include <stdlib.h>
-.sp
+.PP
 .BI "double strtod(const char *" nptr ", char **" endptr );
-.sp
-.BR "#define _XOPEN_SOURCE=600" "   /* or #define _ISOC99_SOURCE */"
 .br
-.B #include <stdlib.h>
-.sp
 .BI "float strtof(const char *" nptr ", char **" endptr );
 .br
 .BI "long double strtold(const char *" nptr ", char **" endptr );
+.PP
+.in -4n
+Feature Test Macro Requirements for glibc (see
+.BR feature_test_macros (7)):
+.in
+.ad l
+.PP
+.BR strtof (),
+.BR strtold ():
+.RS 4
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+.RE
+.ad
 .SH DESCRIPTION
 The
 .BR strtod (),
@@ -67,60 +78,65 @@ to
 .IR double ,
 .IR float ,
 and
-.I long double 
+.I long double
 representation, respectively.
-
+.PP
 The expected form of the (initial portion of the) string is
-optional leading white space as recognized by \fIisspace\fP(3),
-an optional plus (``+'') or minus sign (``\-'') and then either
+optional leading white space as recognized by
+.BR isspace (3),
+an optional plus (\(aq+\(aq) or minus sign (\(aq\-\(aq) and then either
 (i) a decimal number, or (ii) a hexadecimal number,
 or (iii) an infinity, or (iv) a NAN (not-a-number).
-.LP
+.PP
 A
 .I "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
+possibly containing a radix character (decimal point, locale-dependent,
+usually \(aq.\(aq), optionally followed by a decimal exponent.
+A decimal exponent consists of an \(aqE\(aq or \(aqe\(aq, followed by an
+optional plus or minus sign, followed by a nonempty sequence of
 decimal digits, and indicates multiplication by a power of 10.
-.LP
+.PP
 A
 .I "hexadecimal number"
-consists of a ``0x'' or ``0X'' followed by a nonempty sequence of
+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
+optionally followed by a binary exponent.
+A binary exponent
+consists of a \(aqP\(aq or \(aqp\(aq, followed by an optional
+plus or minus sign, followed by a nonempty sequence of
 decimal digits, and indicates multiplication by a power of 2.
 At least one of radix character and binary exponent must be present.
-.LP
+.PP
 An
 .I infinity
-is either ``INF'' or ``INFINITY'', disregarding case.
-.LP
+is either "INF" or "INFINITY", disregarding case.
+.PP
 A
 .I 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.
-
-.SH "RETURN VALUE"
+is "NAN" (disregarding case) optionally followed by a string,
+.IR (n-char-sequence) ,
+where
+.IR n-char-sequence
+specifies in an implementation-dependent
+way the type of NAN (see NOTES).
+.SH RETURN VALUE
 These functions return the converted value, if any.
-
+.PP
 If
 .I endptr
 is not NULL,
 a pointer to the character after the last character used in the conversion
 is stored in the location referenced by
 .IR endptr .
-
-If no conversion is performed, zero is returned and the value of
+.PP
+If no conversion is performed, zero is returned and (unless
+.I endptr
+is null) the value of
 .I nptr
 is stored in the location referenced by
 .IR endptr .
-
+.PP
 If the correct value would cause overflow, plus or minus
 .B HUGE_VAL
 .RB ( HUGE_VALF ,
@@ -132,34 +148,67 @@ is stored in
 If the correct value would cause underflow, zero is
 returned and
 .B ERANGE
-is stored in 
+is stored in
 .IR errno .
 .SH ERRORS
 .TP
 .B ERANGE
 Overflow or underflow occurred.
-.SH "CONFORMING TO"
-ANSI C describes
+.SH ATTRIBUTES
+For an explanation of the terms used in this section, see
+.BR attributes (7).
+.TS
+allbox;
+lbw29 lb lb
+l l l.
+Interface      Attribute       Value
+T{
 .BR strtod (),
-C99
-describes the other two functions.
+.BR strtof (),
+.BR strtold ()
+T}     Thread safety   MT-Safe locale
+.TE
+.SH CONFORMING TO
+POSIX.1-2001, POSIX.1-2008, C99.
+.PP
+.BR strtod ()
+was also described in C89.
 .SH NOTES
-Since 
-0 can legitimately be returned 
+Since
+0 can legitimately be returned
 on both success and failure, the calling program should set
 .I errno
-to 0 before the call, 
+to 0 before the call,
 and then determine if an error occurred by checking whether
 .I errno
-has a non-zero value after the call.
+has a nonzero value after the call.
+.PP
+In the glibc implementation, the
+.IR n-char-sequence
+that optionally follows "NAN"
+is interpreted as an integer number
+(with an optional '0' or '0x' prefix to select base 8 or 16)
+that is to be placed in the
+mantissa component of the returned value.
+.\" From glibc 2.8's stdlib/strtod_l.c:
+.\"     We expect it to be a number which is put in the
+.\"     mantissa of the number.
+.\" It looks as though at least FreeBSD (according to the manual) does
+.\" something similar.
+.\" C11 says: "An implementation may use the n-char sequence to determine
+.\"    extra information to be represented in the NaN's significant."
 .SH EXAMPLE
 See the example on the
 .BR strtol (3)
-manual page; 
+manual page;
 the use of the functions described in this manual page is similar.
-.SH "SEE ALSO"
+.SH SEE ALSO
 .BR atof (3),
 .BR atoi (3),
 .BR atol (3),
+.BR nan (3),
+.BR nanf (3),
+.BR nanl (3),
+.BR strfromd (3),
 .BR strtol (3),
 .BR strtoul (3)