c++怎样把double转为string

 我来答
好程序员
2016-09-09 · 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%
帮助的人:616万
展开全部
方法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。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式