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

2024-10-30 21:28:16
推荐回答(3个)
回答1:

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

#include
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
与期望结果相同。

回答2:

不是那个原因吧?strtod的转换应该是比较贴近的,做到14、15位应该没有大问题。你没有成功是因为输出精度没有取合适。试试下面的……
void main(void){
char a[]="29.297999571234567";
printf("%.15f\n",strtod(a,NULL));
}
atof应该也可以。

回答3:

你可以试着把它改成“long float”型,看精度会不会高点。如果不行,那就没办法转了。在C语言 中,一般小数点后面如果要精确到好多位,都是用数组的形式存储的,不需要非得用浮点型数。