| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1329 人关注过本帖
标题:float x=67.8564,y=-789.124;printf("%-10f,%-10f\n",x,y);运行结果疑问求解 ...
只看楼主 加入收藏
朔源
Rank: 1
等 级:新手上路
帖 子:105
专家分:4
注 册:2015-9-22
结帖率:90%
收藏
已结贴  问题点数:20 回复次数:6 
float x=67.8564,y=-789.124;printf("%-10f,%-10f\n",x,y);运行结果疑问求解答
void main()
{
float x=67.8564,y=-789.124;
printf("%-10f,%-10f\n",x,y);
}
运行结果 y=-789.124023 多出来的 023 是怎么回事。。。不是-789.124000补足小数点后6位的吗?刚开始自学C语言。请大家见谅。。谢谢!!
搜索更多相关主题的帖子: 小数点 C语言 
2015-09-22 20:19
hjx1120
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:李掌柜
等 级:贵宾
威 望:41
帖 子:1314
专家分:6927
注 册:2008-1-3
收藏
得分:6 
有两种解决方案

A:
把f改成g,让编译器帮楼主自动提高精确度
printf("%-10g,%-10g\n",x,y);

B:
自己手动定位有效精确值
printf("%-10.4f,%-10.3f\n",x,y);
2015-09-22 20:54
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:4 
google一下,什么叫 浮点数
2015-09-23 09:06
朔源
Rank: 1
等 级:新手上路
帖 子:105
专家分:4
注 册:2015-9-22
收藏
得分:0 
多谢楼上前辈的解答。。。。。。

浮点型讲的都是文字理论,没有例子脑袋转不过来。见谅!

把 printf("%-10f,%-10f\n",x,y);改成 printf("%-10g,%-10g\n",x,y);或printf("%-10.4f,%-10.3f\n",x,y);
其中 %-10f 改为 %-10g是输出宽度较短的一种格式 y=-789.124023 后面的 023 也就没了。改为 %-10.3f 是吧小数后面
定位 3 个数。我的问题是如果不改,那么输出的时候 y=-789.124 后面加的 023 是系统为了补满小数点后6位随机加的吗?
vc++6.0随机+023 其他的就可能+别的数字。是不是这样?
2015-09-23 10:06
hjx1120
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:李掌柜
等 级:贵宾
威 望:41
帖 子:1314
专家分:6927
注 册:2008-1-3
收藏
得分:10 
很简单,浮点数是以二进制保存的,在二进制转换为十进制的过程中会有精确丢失
楼主可把67.8564转换成二进制,在把它转换成十进制,试试

PS:float浮点类型的默认有效值小数点六位
2015-09-23 10:41
朔源
Rank: 1
等 级:新手上路
帖 子:105
专家分:4
注 册:2015-9-22
收藏
得分:0 
谢谢。hjx1120的解惑。
 现在知道了。
2015-09-23 11:09
朔源
Rank: 1
等 级:新手上路
帖 子:105
专家分:4
注 册:2015-9-22
收藏
得分:0 
按确认结贴。为什么没有反应。分数都有分配完的。。。
2015-09-25 19:54
快速回复:float x=67.8564,y=-789.124;printf("%-10f,%-10f\n",x,y);运行结果疑 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024872 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved