
C语言 字符串转换浮点 小数点后9位
我有个字符串a[15]=“29.29799957”;如何转换成浮点型?我试了atof和strtod,小数点后面存到一定位数就四舍五入了,全部给补0了==...
我有个字符串
a[15] = “29.29799957”;
如何转换成浮点型?
我试了atof和strtod,
小数点后面存到一定位数就四舍五入了,
全部给补0了= = 展开
a[15] = “29.29799957”;
如何转换成浮点型?
我试了atof和strtod,
小数点后面存到一定位数就四舍五入了,
全部给补0了= = 展开
3个回答
展开全部
可以使用库函数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
与期望结果相同。
展开全部
不是那个原因吧?strtod的转换应该是比较贴近的,做到14、15位应该没有大问题。你没有成功是因为输出精度没有取合适。试试下面的……
void main(void){
char a[]="29.297999571234567";
printf("%.15f\n",strtod(a,NULL));
}
atof应该也可以。
void main(void){
char a[]="29.297999571234567";
printf("%.15f\n",strtod(a,NULL));
}
atof应该也可以。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你可以试着把它改成“long float”型,看精度会不会高点。如果不行,那就没办法转了。在C语言 中,一般小数点后面如果要精确到好多位,都是用数组的形式存储的,不需要非得用浮点型数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询