| .\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) |
| .\" |
| .\" %%%LICENSE_START(VERBATIM) |
| .\" Permission is granted to make and distribute verbatim copies of this |
| .\" manual provided the copyright notice and this permission notice are |
| .\" preserved on all copies. |
| .\" |
| .\" Permission is granted to copy and distribute modified versions of this |
| .\" manual under the conditions for verbatim copying, provided that the |
| .\" entire resulting derived work is distributed under the terms of a |
| .\" permission notice identical to this one. |
| .\" |
| .\" Since the Linux kernel and libraries are constantly changing, this |
| .\" manual page may be incorrect or out-of-date. The author(s) assume no |
| .\" responsibility for errors or omissions, or for damages resulting from |
| .\" the use of the information contained herein. The author(s) may not |
| .\" have taken the same level of care in the production of this manual, |
| .\" which is licensed free of charge, as they might when working |
| .\" professionally. |
| .\" |
| .\" Formatted or processed versions of this manual, if unaccompanied by |
| .\" the source, must acknowledge the copyright and authors of this work. |
| .\" %%%LICENSE_END |
| .\" |
| .\" References consulted: |
| .\" Linux libc source code |
| .\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991) |
| .\" 386BSD man pages |
| .\" Modified Sat Jul 24 19:40:39 1993 by Rik Faith (faith@cs.unc.edu) |
| .\" Modified Fri Jun 25 12:10:47 1999 by Andries Brouwer (aeb@cwi.nl) |
| .\" |
| .TH ECVT 3 2021-03-22 "" "Linux Programmer's Manual" |
| .SH NAME |
| ecvt, fcvt \- convert a floating-point number to a string |
| .SH SYNOPSIS |
| .nf |
| .B #include <stdlib.h> |
| .PP |
| .BI "char *ecvt(double " number ", int " ndigits ", int *restrict " decpt , |
| .BI " int *restrict " sign ); |
| .BI "char *fcvt(double " number ", int " ndigits ", int *restrict " decpt , |
| .BI " int *restrict " sign ); |
| .fi |
| .PP |
| .RS -4 |
| Feature Test Macro Requirements for glibc (see |
| .BR feature_test_macros (7)): |
| .RE |
| .PP |
| .BR ecvt (), |
| .BR fcvt (): |
| .nf |
| Since glibc 2.17 |
| (_XOPEN_SOURCE >= 500 && ! (_POSIX_C_SOURCE >= 200809L)) |
| || /* Glibc >= 2.20 */ _DEFAULT_SOURCE |
| || /* Glibc <= 2.19 */ _SVID_SOURCE |
| Glibc versions 2.12 to 2.16: |
| (_XOPEN_SOURCE >= 500 && ! (_POSIX_C_SOURCE >= 200112L)) |
| || _SVID_SOURCE |
| Before glibc 2.12: |
| _SVID_SOURCE || _XOPEN_SOURCE >= 500 |
| .\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED |
| .fi |
| .SH DESCRIPTION |
| The |
| .BR ecvt () |
| function converts \fInumber\fP to a null-terminated |
| string of \fIndigits\fP digits (where \fIndigits\fP is reduced to a |
| system-specific limit determined by the precision of a |
| .IR double ), |
| and returns a pointer to the string. |
| The high-order digit is nonzero, unless |
| .I number |
| is zero. |
| The low order digit is rounded. |
| The string itself does not contain a decimal point; however, |
| the position of the decimal point relative to the start of the string |
| is stored in \fI*decpt\fP. |
| A negative value for \fI*decpt\fP means that |
| the decimal point is to the left of the start of the string. |
| If the sign of |
| \fInumber\fP is negative, \fI*sign\fP is set to a nonzero value, |
| otherwise it is set to 0. |
| If |
| .I number |
| is zero, it is unspecified whether \fI*decpt\fP is 0 or 1. |
| .PP |
| The |
| .BR fcvt () |
| function is identical to |
| .BR ecvt (), |
| except that |
| \fIndigits\fP specifies the number of digits after the decimal point. |
| .SH RETURN VALUE |
| Both the |
| .BR ecvt () |
| and |
| .BR fcvt () |
| functions return a pointer to a |
| static string containing the ASCII representation of \fInumber\fP. |
| The static string is overwritten by each call to |
| .BR ecvt () |
| or |
| .BR fcvt (). |
| .SH ATTRIBUTES |
| For an explanation of the terms used in this section, see |
| .BR attributes (7). |
| .ad l |
| .nh |
| .TS |
| allbox; |
| lbx lb lb |
| l l l. |
| Interface Attribute Value |
| T{ |
| .BR ecvt () |
| T} Thread safety MT-Unsafe race:ecvt |
| T{ |
| .BR fcvt () |
| T} Thread safety MT-Unsafe race:fcvt |
| .TE |
| .hy |
| .ad |
| .sp 1 |
| .SH CONFORMING TO |
| SVr2; |
| marked as LEGACY in POSIX.1-2001. |
| POSIX.1-2008 removes the specifications of |
| .BR ecvt () |
| and |
| .BR fcvt (), |
| recommending the use of |
| .BR sprintf (3) |
| instead (though |
| .BR snprintf (3) |
| may be preferable). |
| .SH NOTES |
| .\" Linux libc4 and libc5 specified the type of |
| .\" .I ndigits |
| .\" as |
| .\" .IR size_t . |
| Not all locales use a point as the radix character ("decimal point"). |
| .SH SEE ALSO |
| .BR ecvt_r (3), |
| .BR gcvt (3), |
| .BR qecvt (3), |
| .BR setlocale (3), |
| .BR sprintf (3) |