| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 8652 人关注过本帖
标题:float的最大支持不是7位小数么!为什么会出现6位小数?
只看楼主 加入收藏
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
嗯,是我理解的意思。下面的程序就说明了一切。
#include <stdio.h>
int main(void)
{
    float a=123456.12345678;
    printf("%f\n",a);
    return 0;
}
2008-12-12 17:42
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
又测试了一下。
#include <stdio.h>
int main(void)
{
    float a=0.123456789;
    printf("%f\n",a);
    return 0;
}
2008-12-12 17:43
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1688
专家分:4262
注 册:2007-12-27
收藏
得分:0 
是啊
float类型的计算结果,7位以内的是近似值,8位以外的部分是垃圾值。

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2008-12-12 17:47
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
这么说精度还是蛮小的……

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-12-12 17:49
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1688
专家分:4262
注 册:2007-12-27
收藏
得分:0 
所以所有的工科数值计算都至少double
甚至80位和128位的浮点,很少用32位浮点

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2008-12-12 17:54
老刘
Rank: 1
等 级:新手上路
帖 子:30
专家分:4
注 册:2008-9-25
收藏
得分:0 
明白了,这么多老师教,在不会也真对不起各位前辈了!我现在总结下我的理解:所谓7位有效数,也可以叫做7位精度,就是数能够精确到7位!如:PI==3.1415926!精度为7位吧,如果圆周率继续往后算就算是超出了这个7位:3.1415926XXXXXXXXXXX!X都是垃圾!而FLOAT单精度浮点最支持的就是这个7位的有效数,和我们所算出来的小数位是两个毫无关系的概念?不知道各位老师能否赞同?
另外:希望74兄能给在下留个联系方式!非常荣幸!
2008-12-12 18:01
守鹤
Rank: 4
来 自:山東臨沂
等 级:贵宾
威 望:12
帖 子:337
专家分:0
注 册:2008-6-20
收藏
得分:0 
这些与数值在计算机中的存储有关,均以二进制数表示,float占用4个字节,double占用8字节(一个字节8位)
对于float型的,(用32位表死)最高位表示符号,紧接着的8位表示整数值,后面的位数则表示小数部分
用位数的权值 * (该位的位值)= 数值(十进制)

多少个日日夜夜想起你,只希望有缘再次相见
2008-12-12 21:04
守鹤
Rank: 4
来 自:山東臨沂
等 级:贵宾
威 望:12
帖 子:337
专家分:0
注 册:2008-6-20
收藏
得分:0 
以下是引用forever74在2008-12-12 17:54的发言:

所以所有的工科数值计算都至少double
甚至80位和128位的浮点,很少用32位浮点

数据所占的位数,与机器的处理能力(机器的字长)有关,我们所用的电脑
double 一般是64位

多少个日日夜夜想起你,只希望有缘再次相见
2008-12-12 21:08
守鹤
Rank: 4
来 自:山東臨沂
等 级:贵宾
威 望:12
帖 子:337
专家分:0
注 册:2008-6-20
收藏
得分:0 
以下是引用forever74在2008-12-12 17:54的发言:

所以所有的工科数值计算都至少double
甚至80位和128位的浮点,很少用32位浮点

多少个日日夜夜想起你,只希望有缘再次相见
2008-12-12 21:09
atkisc
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2009-6-20
收藏
得分:0 
以下是引用老刘在2008-12-12 18:01的发言:

明白了,这么多老师教,在不会也真对不起各位前辈了!我现在总结下我的理解:所谓7位有效数,也可以叫做7位精度,就是数能够精确到7位!如:PI==3.1415926!精度为7位吧,如果圆周率继续往后算就算是超出了这个7位: ...



你这还是不对吧,有效位是7位,算上小数点前非零数字一共7位,你这都8位了......
2009-07-28 17:09
快速回复:float的最大支持不是7位小数么!为什么会出现6位小数?
数据加载中...
 
   



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

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