C语言的菜菜问题

ADAMITE 2004-07-24 10:54:27
int main()
{
float d1=10000.123;
puts("Outputting a number with different field widths.\n");
printf("%5f\n",d1);
printf("%10f\n",d1);
printf("%15f\n",d1);
printf("%25f\n",d1);
puts("\nPress Enter to continue...");
fflush(stdin);
getchar();
return 0;
}




输出的结果是:

Outputting a number with different field widths.



10000.123000
10000.123000
10000.123000
10000.123000



Press Enter to continue...




我原来定义d1=10000.123;
为什么输出后变成10000.123047(怎么多出了个047???)
...全文
138 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
sekelon 2004-07-24
  • 打赏
  • 举报
回复
多出来的047是计算机保存浮点数时自动添加的无效尾数,这是计算机保存浮点数的特点,是无法避免的,所以在使用浮点数比较时要特别注意这一点
ADAMITE 2004-07-24
  • 打赏
  • 举报
回复
回复人: ahwang(阿旺)


你定义的是float,在float中他的有效位数是6位,加小数点七位,后面的047是计算机随机给的无效数字


那为什么不是输出10000.123000呢?
ADAMITE 2004-07-24
  • 打赏
  • 举报
回复
晕哦,发错了

改正一下:

输出的结果是:

Outputting a number with different field widths.



10000.123047
10000.123047
10000.123047
10000.123047



Press Enter to continue...
cenfil 2004-07-24
  • 打赏
  • 举报
回复
你的输出哪里有10000.123047的输出呢?
应该是精度问题!是输出的格式问题吧!
ahwang 2004-07-24
  • 打赏
  • 举报
回复
你定义的是float,在float中他的有效位数是6位,加小数点七位,后面的047是计算机随机给的无效数字
sclarkca810619 2004-07-24
  • 打赏
  • 举报
回复
#include<stdio.h>
int main()
{
double d1=10000.123;
puts("Outputting a number with different field widths.\n");
printf("%5f\n",d1);
printf("%10f\n",d1);
printf("%15f\n",d1);
printf("%25f\n",d1);
puts("\nPress Enter to continue...");
fflush(stdin);
getchar();
return 0;
}
就行了,在vc中会有warning的,你看看warning就明白了:)
ADAMITE 2004-07-24
  • 打赏
  • 举报
回复
好象不是随机的啊

书上的结果也是10000.123047

为什么我的电脑上的随机加的会和书上的一样,也是10000.123047???
ahwang 2004-07-24
  • 打赏
  • 举报
回复
ahwang(阿旺)


你定义的是float,在float中他的有效位数是6位,加小数点七位,后面的047是计算机随机给的无效数字


那为什么不是输出10000.123000呢?

答:047是计算机自己加的,是随机的。

70,037

社区成员

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

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