一个小程序的问题

baiye1134 2010-03-23 12:27:09
书上解析
printf("%f",123.4567f);
输出的是
123.456703

我完全想不通,这个03到底是怎么碰出来的。。望解说。。
...全文
94 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
jbz001 2010-03-23
  • 打赏
  • 举报
回复
这是浮点类型的精确问题,建议看看浮点类型在内存中的存储方式。
另外,谢谢积分~!
kanone0seele 2010-03-23
  • 打赏
  • 举报
回复
baiye1134 2010-03-23
  • 打赏
  • 举报
回复
什么意思?
jackyjkchen 2010-03-23
  • 打赏
  • 举报
回复
浮点数默认精确六位,而具体精度数字有赖于浮点模型……
huanmie_09 2010-03-23
  • 打赏
  • 举报
回复
[Quote=引用楼主 baiye1134 的回复:]
书上解析
printf("%f",123.4567f);
输出的是
123.456703

我完全想不通,这个03到底是怎么碰出来的。。望解说。。
[/Quote]
浮点数的精度问题。
可以指定有效小数位进行输出。
printf("%.4f",123.4567f);
bobo364 2010-03-23
  • 打赏
  • 举报
回复
#include<stdio.h>
int main()
{
printf("%f",123.4567);
system("pause");
return 0;
}

你把后面的f去掉,就对了,编译器把f也输出了
  • 打赏
  • 举报
回复
精度问题,6位,浮点数只有!
cy330206 2010-03-23
  • 打赏
  • 举报
回复
楼主这类问题是浮点型的精度问题,,百度一搜网上很多的
baiye1134 2010-03-23
  • 打赏
  • 举报
回复
我知道 了,。因为后面加了一个f就是代表的float而他是精确 到后六位,也就是说,如果小位后不够的话,程序就会随机的加两个数,而至于为什么是03,就不知道了。但是只要尾数是那,就会是03.换成其他 的,比如.4啊之类的,就会是.400000了。。
kanone0seele 2010-03-23
  • 打赏
  • 举报
回复
这个里面有详细解释,= =

http://www.cnblogs.com/jillzhang/archive/2007/06/24/793901.html

69,373

社区成员

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

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