可能有好多人,包括C语言老手都不知道如何将float数据转换为string,我就是这样,今天查了一下MSDN,才知道C提供了_gcvt函数实现这个功能,收获着实不小,为了方便自己查询,也为了那些像我这样的网友能够了解该函数的具体用法,我把MSDN的原文原封不动抄录如下:
_gcvt
Converts a floating-point value to a string, which it stores in a buffer.
char
*_gcvt(
double
value
,
int
digits
,
char
*
buffer
);
Routine
|
Required Header
|
Compatibility
|
_gcvt
|
<stdlib.h> |
Win 95, Win NT |
For additional compatibility information, see Compatibility in the Introduction.
Libraries
LIBC.LIB |
Single thread static library, retail version |
LIBCMT.LIB |
Multithread static library, retail version |
MSVCRT.LIB |
Import library for MSVCRT.DLL, retail version |
Return Value
_gcvt returns a pointer to the string of digits. There is no error return.
Parameters
value
Value to be converted
digits
Number of significant digits stored
buffer
Storage location for result
Remarks
The _gcvt function converts a floating-point value to a character string (which includes a decimal point and a possible sign byte) and stores the string in buffer. The buffer should be large enough to accommodate the converted value plus a terminating null character, which is appended automatically. If a buffer size of digits + 1 is used, the function overwrites the end of the buffer. This is because the converted string includes a decimal point and can contain sign and exponent information. There is no provision for overflow. _gcvt attempts to produce digits digits in decimal format. If it cannot, it produces digits digits in exponential format. Trailing zeros may be suppressed in the conversion.
Example
/* _GCVT.C: This program converts -3.1415e5 * to its string representation. */#include <stdlib.h>#include <stdio.h>void main( void ){ char buffer[50]; double source = -3.1415e5; _gcvt( source, 7, buffer ); printf( "source: %f buffer: '%s'\n", source, buffer ); _gcvt( source, 7, buffer ); printf( "source: %e buffer: '%s'\n", source, buffer );}
Output
source: -314150.000000 buffer: '-314150.'source: -3.141500e+005 buffer: '-314150.'
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=708935