floatをstringに変換する方法

2312 ワード

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
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 
#include 

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.'