double型怎么转换成char *

WYJBCB 2012-04-11 11:51:51
比如说
double a=3.1 ,转换字符串str="3.1"这是正常的,

但如果
double a=0.0000031;
转换成字符串str 后变成 3.1E-6 ,能不能str="0.0000031"??怎么转呢?
...全文
4388 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ren 2012-04-12
  • 打赏
  • 举报
回复
我 觉得 要自己 写个函数, 一下是我写的“从控制台读入double数据的容错处理(附完整可运行代码)
” 我是将字符串转换成 double类型的数据。
http://blog.csdn.net/my_renzhibo/article/details/7406173
希望 对您有些帮助。
jiuchang 2012-04-11
  • 打赏
  • 举报
回复
你是怎么转的,sprintf吗,用的什么类型符号
赵4老师 2012-04-11
  • 打赏
  • 举报
回复
用10进制小数不能精确表示某些三进制小数0.1(3)=0.33333333333……(10)
同理,用二进制小数也不能精确表示某些10进制小数。
WYJBCB 2012-04-11
  • 打赏
  • 举报
回复
我指的double不是特定的某个值,如果知道了,当然 可以直接用sprintf来转了

比如我声明double aa;

这个aa有可能是3.1,有可能是0.0000031,当然还有可能是别的值 ,总之这个aa不是一个常量,这么说明白吗?

当它为3.1时,转成字符串就是3.1这个没有问题,但问题是当为 0.0000031时,转成字符串后变成了 3.1E-6 ,计算机当然能认出 3.1E-6 = 0.0000031,但我的客户不认得,他们要求 这个值 是什么就显示为什么,
WYJBCB 2012-04-11
  • 打赏
  • 举报
回复
有这函数吗?
如此美丽的你 2012-04-11
  • 打赏
  • 举报
回复
ftoa()
jiuchang 2012-04-11
  • 打赏
  • 举报
回复
变量是什么意思
只要是double类型的都可以用
WYJBCB 2012-04-11
  • 打赏
  • 举报
回复
楼上的,如果double tmp是变量呢?
sprintf(buf, "%.7lf\n", tmp);//如果是变量,不能用"%.7lf

自信男孩 2012-04-11
  • 打赏
  • 举报
回复

#incude <stdio.h>

int main(void)
{
double tmp = 0.0000031;
char buf[20];

printf("tmp = %.7lf\n", tmp);
sprintf(buf, "%.7lf\n", tmp);
puts(buf);

return 0;
}

15,440

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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