大家帮忙看看atof函数转换出来数据精度有问题的什么原因

wangjian727924 2010-10-26 10:01:36
#include <stdio.h>
#include <stdlib.h>

/*
*
*/
int main(int argc, char** argv) {
char str[55] = "84612.60";

float ff;
ff=(float)atof(str);
printf("str:%s\n",str);
printf("%f\n",atof(str));
printf("2=%f\n",&ff);

return (EXIT_SUCCESS);
}

打印结果:
str:1008020.60
1008020.600000
2=1008020.874854

保留2位小数出现精度问题,哪位帮帮解释一下和给一个解决办法,谢谢啦
...全文
1183 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
bobo364 2010-10-26
  • 打赏
  • 举报
回复
float精度不够,换成double就行了
#include <stdio.h>
#include <stdlib.h>

int main()
{
char str[55] = "84612.60";
double ff;
ff=(double)atof(str);
printf("str:%s\n",str);
printf("%f\n",atof(str));
printf("2=%f\n",ff);
system("pause");
return (0);
}
justkk 2010-10-26
  • 打赏
  • 举报
回复
&ff这样打印的是ff变量的地址,不知道lz是什么环境 .. 能这么用
可以把float换成double,精度高一些

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char** argv)
{
char str[55] = "84612.60";

double ff;
ff=atof(str);
printf("str:%s\n",str);
printf("%f\n",atof(str));
printf("2=%f\n",ff);

return (EXIT_SUCCESS);
}
justkk 2010-10-26
  • 打赏
  • 举报
回复
printf("2=%f\n",&ff);
ff的值能这样打印吗?去掉&符号..

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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