c++怎样把double转为string

 我来答
好程序员
2018-08-04 · HTML5前端培训/大数据培训/Java
好程序员
好程序员是IT高端课程培训基地,从平凡到卓越,为梦想而拼搏。
向TA提问
展开全部

在Windows系统下的转换方法

  1. windows下进行此类一般使用sprintf_s函数,使用该函数需要包含头文件stdio.h

  2. 示例:例如我要将 1.234567 这个小数转化为字符串"1.234567“。首先,要包含头文件 cstdio(即 stdio.h)。


  3. 接着,要定义一个字符缓冲区 buffer,大小要足以容纳要转换的 double 变量。


  4. 再使用sprinf_s进行转换,转换的字符串保存在buffer中。


  5. 这时,就可以用string类型变量str来接收值了。


  6. 为了验证结果,我们加句代码输出这个str的值,程序运行的结果如下图。


DoramiHe
2016-04-30 · 知道合伙人互联网行家
DoramiHe
知道合伙人互联网行家
采纳数:25332 获赞数:59541
2011年中山职业技术学院毕业,现担任毅衣公司京东小二

向TA提问 私信TA
展开全部
方法1:sprintf(char*destination,char*,double/float)
是用destination来存储double/float值的字符
然后直接string a(destination)。
该方法有一个缺点,就是存储的值可能和输入的double/float的值有误差,即最后字符串a中的值和输入的double/float的值不一样,如
float f=4.345;
sprintf(destination,"%f",f)
string te=f;
则te的值为4.344971

方法2:#include<sstream> 老类是<strstream> ,即用strstream类来代替stringstream
stringstream ss;
ss<<34.45;
string t;
t<<ss
ss.clear()

方法3:
函数名: gcvt 功 能: 把浮点数转换成字符串 用 法: char *gcvt(double value, int ndigit, char *buf); 头文件:#include <stdlib.h> 参数: value——被转换的值。 Digits——存储的有效数字位数。 Buffe——结果的存储位置。 说明: gcvt函数把一个浮点值转换成一个字符串(包括一个小数点和可能的 符号字节)并存储该字符串在buffer中。该buffer应足够大以便容纳转换 的值加上结尾的空格字符,它是自动添加的。如果一个缓冲区的尺寸为 digits的尺寸+1,该函数覆盖该缓冲区的末尾。这是因为转换的字符串包 括一个小数点以及可能包含符号和指数信息。不提供上溢出。gcvt试图 以十进制格式产生digits数字,如果不可能,它以指数格式产生digits数字, 在转换时可能截除尾部的0。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
缘Lai如茨
2016-04-23 · TA获得超过8631个赞
知道大有可为答主
回答量:7534
采纳率:92%
帮助的人:614万
展开全部
方法1:sprintf(char*destination,char*,double/float)
是用destination来存储double/float值的字符
然后直接string a(destination)。
该方法有一个缺点,就是存储的值可能和输入的double/float的值有误差,即最后字符串a中的值和输入的double/float的值不一样,如
float f=4.345;
sprintf(destination,"%f",f)
string te=f;
则te的值为4.344971

方法2:#include<sstream> 老类是<strstream> ,即用strstream类来代替stringstream
stringstream ss;
ss<<34.45;
string t;
t<<ss
ss.clear()

方法3:
函数名: gcvt 功 能: 把浮点数转换成字符串 用 法: char *gcvt(double value, int ndigit, char *buf); 头文件:#include <stdlib.h> 参数: value——被转换的值。 Digits——存储的有效数字位数。 Buffe——结果的存储位置。 说明: gcvt函数把一个浮点值转换成一个字符串(包括一个小数点和可能的 符号字节)并存储该字符串在buffer中。该buffer应足够大以便容纳转换 的值加上结尾的空格字符,它是自动添加的。如果一个缓冲区的尺寸为 digits的尺寸+1,该函数覆盖该缓冲区的末尾。这是因为转换的字符串包 括一个小数点以及可能包含符号和指数信息。不提供上溢出。gcvt试图 以十进制格式产生digits数字,如果不可能,它以指数格式产生digits数字, 在转换时可能截除尾部的0。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
推荐于2018-03-07 · TA获得超过3954个赞
知道大有可为答主
回答量:1636
采纳率:77%
帮助的人:1235万
展开全部

1.包含头文件:

#include <string>

2.使用函数std::to_string将整数或者浮点数转换为std::string类型:

std::string strRep = std::to_string( 3.14 );


除了这个你可以使用字符串输出流和C语言的字符串函数。

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
育知同创教育
2018-08-01 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
展开全部
ftoa:浮点数强制成字符串,

这个不是C标准库中的函数,而是Windows平台下扩展的,标准库中有sprintf,功能比这个更强,用法跟printf类似:
char str[255];
sprintf(str, "%f", 10.8); //将10.8转为字符串

c++中有itoa,没有ftoa,要使用自己编写。
一般用:
CString str;
str.Format("%f", 1.2345);
AfxMessageBox(str);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式