| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 8652 人关注过本帖
标题:float的最大支持不是7位小数么!为什么会出现6位小数?
只看楼主 加入收藏
老刘
Rank: 1
等 级:新手上路
帖 子:30
专家分:4
注 册:2008-9-25
结帖率:100%
收藏
 问题点数:0 回复次数:21 
float的最大支持不是7位小数么!为什么会出现6位小数?
#include <stdio.h>
void main()
{
         float a=10.0f;
    float b=4.0f;
    float c=0.0f;

         c=a/b;
    printf("a lank %f feet long can be cut into %f pieces %f feet long.\n",a,b,c);
}
输出结果为:a lank 10.000000 feet long can be cut into 4.000000 pieces 2.500000 feet long.
小数居然是6位!搞不明白!
搜索更多相关主题的帖子: float 小数 
2008-12-12 13:47
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1688
专家分:4262
注 册:2007-12-27
收藏
得分:0 
没人说过7位小数
说的是7位十进制有效数字
并且这个和%f按6位小数输出一点关系都没有
%f输出6位小数只是因为它喜欢输出6位小数

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2008-12-12 13:55
老刘
Rank: 1
等 级:新手上路
帖 子:30
专家分:4
注 册:2008-9-25
收藏
得分:0 
回复 第2楼 forever74 的帖子
关键字float 内存占用最大4字节,值的范围+或-3.4E38(7位小数精度)!如果要存入精度为7位的数字,那么应该使用float型的变量!
高手这是书上说的,那书上所说的7位是个什么概念!麻烦指教!谢谢了!
2008-12-12 14:03
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1688
专家分:4262
注 册:2007-12-27
收藏
得分:0 
不要迷信书本,尤其不要按照字面迷信书本。
那个地方本来的意思就应该是7位有效数字,说7位小数是很不严谨的。

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2008-12-12 14:09
老刘
Rank: 1
等 级:新手上路
帖 子:30
专家分:4
注 册:2008-9-25
收藏
得分:0 
哦!那个书讲的倒是能看懂,但是象这样的问题也有不少!如果我把变量转换说明符设置成,%.7f估计就能输出7位的了吧!但是设置成%.8f用float是肯定不行的吧?
只能换成double关键字了吧!只所以生成6位的,是不是可以理解,象你所说的“喜欢”就是默认的意思!
2008-12-12 14:19
老刘
Rank: 1
等 级:新手上路
帖 子:30
专家分:4
注 册:2008-9-25
收藏
得分:0 
果然我的理解错了!我理解的位是小数位的限制应该是-38到+38之间!而不是书上说的7位!现在真搞不懂书上说的7位的意思了!错的离谱了!谢谢74兄的点拨!
2008-12-12 14:27
ying8501
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:1092
专家分:1446
注 册:2008-11-24
收藏
得分:0 
有效数字的位数与指定输出的小数位数(%.7f)是两码事。
“有效数位为7”:是指此数据从第一个非零数字开始,误差不超过本数位半个单位的、精确可信的数位是7位(包括小数点前的非零数位)。
  %.7f:是指输出此数据的时候,小数点之后要显示7位数字(但是如果小数点前还有一些非零数位,那么小数点后的这7位并不能保证都是精确可信的有效数位,)
2008-12-12 15:10
老刘
Rank: 1
等 级:新手上路
帖 子:30
专家分:4
注 册:2008-9-25
收藏
得分:0 
谢谢7楼!比较抽象能举列子么?呵呵!
2008-12-12 17:24
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1688
专家分:4262
注 册:2007-12-27
收藏
得分:0 
7位有效数字的意思是说,你可以输出任意多位浮点数,但是只有从最高位开始的7位是有意义的,第8位以后都是随便产生的垃圾数。
例如,1.0/3.0等于多少?
你输出的时候,可能看到0.33333333333333333333333,当然这种可能性非常小,
更大的可能是类似0.33333332509871658553之类的。
这就是7位有效数字的意思。

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2008-12-12 17:30
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
回复 第9楼 forever74 的帖子
如果是123456.12345678

可信的只有123456.1,其余的都是约值?

我理解的意思没错吧?
2008-12-12 17:36
快速回复:float的最大支持不是7位小数么!为什么会出现6位小数?
数据加载中...
 
   



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

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