float 怎样转换成字符串

mian_bao 2008-07-21 05:36:46
我用MFC写了一个计算器,计算结果为float类型,怎样把它转换成字符类型输出在EDIT 的编辑框中??
...全文
634 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
tangshuiling 2008-07-21
  • 打赏
  • 举报
回复
支持一下,MARK
mian_bao 2008-07-21
  • 打赏
  • 举报
回复
有这么多方法!~!我就用_gcvt了,11楼的方法也挺新鲜的.
谢谢大家
XiaoG602 2008-07-21
  • 打赏
  • 举报
回复
[code=C/C++][/
#include <sstream>
#include <iostream>
using namespace std;
int main()
{
stringstream ss;
string str;
double a=3.14;
ss<<a;
ss>>str;
cout<<str;
return 0;
}
]
Xshl5 2008-07-21
  • 打赏
  • 举报
回复
方法一:

sprintf
函数原型:

int sprintf(
char *buffer,
const char *format [,
argument] ...
);

调用:

...
char str[20]="";
double d=3.1415926535;
sprintf(str,"%f",d);

fwrite(str,1,strlen(str),fp); // 将其写如文件流fp
...


方法二:
直接将浮点值转化成字符串类型,有如下三个函数:
_CRTIMP char* __cdecl ecvt (double, int, int*, int*);
_CRTIMP char* __cdecl fcvt (double, int, int*, int*);
_CRTIMP char* __cdecl gcvt (double, int, char*);

在这里用 _gcvt比较合适,
char *_gcvt( 
double value,
int digits,
char *buffer
);


MSDN的例子:

// crt_gcvt.c
// compile with: /W1
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int main( void )
{
char buffer[_CVTBUFSIZE];
double value = -1234567890.123;
printf( "The following numbers were converted by _gcvt(value,12,buffer):\n" );
_gcvt( value, 12, buffer ); // C4996
// Note: _gcvt is deprecated; consider using _gcvt_s instead
printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
value *= 10;
_gcvt( value, 12, buffer ); // C4996
printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
value *= 10;
_gcvt( value, 12, buffer ); // C4996
printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
value *= 10;
_gcvt( value, 12, buffer ); // C4996
printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );

printf( "\n" );
value = -12.34567890123;
_gcvt( value, 12, buffer ); // C4996
printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
value /= 10;
_gcvt( value, 12, buffer ); // C4996
printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
value /= 10;
_gcvt( value, 12, buffer ); // C4996
printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
value /= 10;
_gcvt( value, 12, buffer ); // C4996
printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
}

---------------------------------------------------------
// Output

The following numbers were converted by _gcvt(value,12,buffer):
buffer: '-1234567890.12' (14 chars)
buffer: '-12345678901.2' (14 chars)
buffer: '-123456789012' (13 chars)
buffer: '-1.23456789012e+012' (19 chars)

buffer: '-12.3456789012' (14 chars)
buffer: '-1.23456789012' (14 chars)
buffer: '-0.123456789012' (15 chars)
buffer: '-1.23456789012e-002' (19 chars)

cumtxxl 2008-07-21
  • 打赏
  • 举报
回复
将控件绑定一个CString 类型的变量 strResult
strResult.format("%f",theFloatDate);
xzdwfwt111 2008-07-21
  • 打赏
  • 举报
回复
char a[];
sprintf(a,"%d",int);
sunhuanwen 2008-07-21
  • 打赏
  • 举报
回复
就像3楼那样

CString str;
str.Format("%f", 3.1415....);
Lilly56 2008-07-21
  • 打赏
  • 举报
回复
结果:float fdata;
EDIT:CString m_Data;

fdata = 3.1415926;
m_Data.Format("%f",fdata);
xingshi8000 2008-07-21
  • 打赏
  • 举报
回复
sprintf()
coverallwangp 2008-07-21
  • 打赏
  • 举报
回复

[Quote=引用 3 楼 healer_kx 的回复:]
MFC啊,那就

CString::Format("%f", 3.14);
[/Quote]
healer_kx 2008-07-21
  • 打赏
  • 举报
回复
MFC啊,那就

CString::Format("%f", 3.14);
coverallwangp 2008-07-21
  • 打赏
  • 举报
回复
itoa()函数

或者利用ASCII码的值,自己写个转换函数


healer_kx 2008-07-21
  • 打赏
  • 举报
回复
sprintf.....

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧