非常纳闷:float不是7位有效数字吗?

theMostValuablePers 2003-08-25 02:14:43
在文本里显示:20 12.345000
为什么不是显示:20 12.34500呢?这样才是7位有效数字呀!
为什么后面有3个0?

#include <stdio.h>
void main()
{
FILE *fp;
int i=20;
float f=12.345f;
fp=fopen("d1.dat","w");
fprintf(fp,"%d %f\n",i,f);
fclose(fp);
}
...全文
77 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
njtu 2003-08-25
  • 打赏
  • 举报
回复
fprintf(fp,"%d %.7f\n",i,f);

先看看msdn中printf的帮助吧。
  • 打赏
  • 举报
回复
自己up
  • 打赏
  • 举报
回复
为什么没人解答啊??
晨星 2003-08-25
  • 打赏
  • 举报
回复
你搞错了,单精度的浮点数,其精度为7位(我记得是6位?),而不是说输出时只能输出7位。
精度和有效数字是两个概念,精度是7位,表示从第8位往后,即使输出来,其精确度也无法保证了。换句话说,误差很可能大于第8位上的单位值。
我记得double类型能保证16位精度。

69,371

社区成员

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

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