为什么1.0没有输出呢?

heshifan 2009-03-19 11:48:21
这是c语言
#include "stdio.h"
void main()
{
float x;
for (x=0;x<=1.0;x += 0.1)
printf("%.1f\n",x);
}

初学者咨询下各位:为什么1.0没有输出呢?
...全文
59 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ydntlk 2009-03-20
  • 打赏
  • 举报
回复
浮点数在计算机中如下保存:
符号 移阶码 尾数
其中,尾数是以二进制格式保存,其精度与十进制数往往有偏差,如0.3 = 0.0100110011001100……在达到一定倍数后将被截断。
可以这样写

for (x=0;fabs(x - 1.0) <= 1e-4;x += 0.1)
printf("%.1f\n",x);
pengzhixi 2009-03-20
  • 打赏
  • 举报
回复
你改成double再试下
heshifan 2009-03-20
  • 打赏
  • 举报
回复
谢谢各位!呵呵!我把float改为double以后 就输出了 ,但是具体精度还是不懂,我在了解下 谢谢各位!
pengzhixi 2009-03-19
  • 打赏
  • 举报
回复
你改成double再试下
pengzhixi 2009-03-19
  • 打赏
  • 举报
回复
与float的精度有关系

69,336

社区成员

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

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