搜索
编程论坛
→
开发语言
→
『 C语言论坛 』
→ float x=67.8564,y=-789.124;printf("%-10f,%-10f\n",x,y);运行结果疑问求解答
标题:
float x=67.8564,y=-789.124;printf("%-10f,%-10f\n",x,y);运行结果疑问求解 ...
只看楼主
朔源
等 级:
新手上路
帖 子: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
来 自:李掌柜
等 级:
贵宾
威 望:
41
帖 子:1314
专家分:6927
注 册:2008-1-3
第
2
楼
得分: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
等 级:
版主
威 望:
507
帖 子:8890
专家分:53117
注 册:2011-1-18
第
3
楼
得分:4
google一下,什么叫 浮点数
2015-09-23 09:06
朔源
等 级:
新手上路
帖 子:105
专家分:4
注 册:2015-9-22
第
4
楼
得分: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
来 自:李掌柜
等 级:
贵宾
威 望:
41
帖 子:1314
专家分:6927
注 册:2008-1-3
第
5
楼
得分:10
很简单,浮点数是以二进制保存的,在二进制转换为十进制的过程中会有精确丢失
楼主可把67.8564转换成二进制,在把它转换成十进制,试试
PS:float浮点类型的默认有效值小数点六位
2015-09-23 10:41
朔源
等 级:
新手上路
帖 子:105
专家分:4
注 册:2015-9-22
第
6
楼
得分:0
谢谢。hjx1120的解惑。
现在知道了。
2015-09-23 11:09
朔源
等 级:
新手上路
帖 子:105
专家分:4
注 册:2015-9-22
第
7
楼
得分:0
按确认结贴。为什么没有反应。分数都有分配完的。。。
2015-09-25 19:54
7
1/1页
1
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-457578-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.708179 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved