C语言 字符串转换浮点 小数点后9位

我有个字符串a[15]=“29.29799957”;如何转换成浮点型?我试了atof和strtod,小数点后面存到一定位数就四舍五入了,全部给补0了==... 我有个字符串
a[15] = “29.29799957”;
如何转换成浮点型?
我试了atof和strtod,
小数点后面存到一定位数就四舍五入了,
全部给补0了= =
展开
 我来答
tattackor
推荐于2018-03-20 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:1056万
展开全部

可以使用库函数atof。
1、函数名 :atof
2、声明 :double atof(const char *nptr);
3、头文件: #include <stdlib.h>
4、功能:将参数nptr中的字符串转为浮点型数据并返回。
5、需要注意的是,必须是合法的字符串,即以实数形式或者科学计数法形式存储的字符串才可以进行转换,否则转换会出错。 比如"sjdhk"这样的字符串是无法转换为浮点数的。而如果是"1.23sdf"这样的形式,只会处理到最后一个数字,结果为1.23。
6、示例代码:

#include<stdlib.h>
int main()
{
char*a="-100.23";//实数形式存储的字符串 
char*b="200e-2";//科学计数法形式存储的字符串
double c;
c=atof(a)+atof(b);//转换后为 -100.23+200e-2=-100.23+2=-98.23
printf(“c=%.2lf\n”,c);//输出结果,保留2位小数。期望结果为c=-98.23
return 0;
}

输出结果
 c=-98.23
与期望结果相同。

White_MouseYBZ
推荐于2017-11-26 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:8182万
展开全部
不是那个原因吧?strtod的转换应该是比较贴近的,做到14、15位应该没有大问题。你没有成功是因为输出精度没有取合适。试试下面的……
void main(void){
char a[]="29.297999571234567";
printf("%.15f\n",strtod(a,NULL));
}
atof应该也可以。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
守候一生的
2013-11-23 · TA获得超过129个赞
知道小有建树答主
回答量:156
采纳率:0%
帮助的人:121万
展开全部
你可以试着把它改成“long float”型,看精度会不会高点。如果不行,那就没办法转了。在C语言 中,一般小数点后面如果要精确到好多位,都是用数组的形式存储的,不需要非得用浮点型数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式