为什么一样??

xingyuanxingchen 2009-03-04 11:50:11
main()

{float a,b;

a=123456.789e5;

b=a+20;

printf("%f\n",a);

printf("%f\n",b);

}

为什么这里的a和b输出值都是一样的。
...全文
110 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuguod20042576 2009-03-04
  • 打赏
  • 举报
回复
超过float的精度范围了
qq675927952 2009-03-04
  • 打赏
  • 举报
回复
UP 楼上各位
烈火蜓蜻 2009-03-04
  • 打赏
  • 举报
回复
a=123456.789e5;

b=a+20;

原则上b = 123456.78920e5
但因类型的精度不够,所以最后两位没有显示
xxweilw 2009-03-04
  • 打赏
  • 举报
回复
是呀,你的值太大了,换个小一点的值是不同的比如:a=12.78f;
gyj_china 2009-03-04
  • 打赏
  • 举报
回复
越界了,超过了float最大表示的最大范围,所以你加多大一个数都一样了。
arong1234 2009-03-04
  • 打赏
  • 举报
回复
float/double的精度都是有限的,double有15位精度,float则更少
你加20对于一个1e10的float而言,是被精度忽略了
fx397993401 2009-03-04
  • 打赏
  • 举报
回复
确实 是精度问题 同意
ctan 2009-03-04
  • 打赏
  • 举报
回复
精度的问题,
20太小被忽略了

69,369

社区成员

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

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