A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 吴刚 中级黑马   /  2012-11-3 12:58  /  2184 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我知道int和float都是基本数据类型,但是int表示整数,float表示浮点数据类型。但是有些比较迷惑,因为int和float都是32位,所以按理说都去掉符号位之后,int是-2^31--(2^31-1),float是-2^128--(2^128-1)。
有几点疑问:
1,float表示范围是怎么存储的,能存下(-2*128)这么大,还是32位大小。
2,我搜索的资料说int的进度比float的精度大啊,啥意思,求科普啊。

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

3 个回复

倒序浏览
float和double的精度是由尾数的位数来决定的。浮点数在内存中是按科学计数法来存储的,其整数部分始终是一个隐含着的“1”,
由于它是不变的,故不能对精度造成影响。
float:2^23 = 8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字;

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
齐连涛 发表于 2012-11-3 15:04
float和double的精度是由尾数的位数来决定的。浮点数在内存中是按科学计数法来存储的,其整数部分始终是一 ...

是不是可以这样理解,float的进度是7位就是说小数点后面是7位小数吗,还有你说的浮点数在科学计数法存储的,隐含着“1”,是什么意思。。。。。
回复 使用道具 举报
吴刚 发表于 2012-11-3 21:21
是不是可以这样理解,float的进度是7位就是说小数点后面是7位小数吗,还有你说的浮点数在科学计数法存储 ...

首先要知道什么事科学计数法:假设365.689这个数,科学计数法表示为:3.65689X10的2次方,0.067698682科学计数法表示为:6.7698682X10的-2次方,  
计算机里面都是二进制 所以一个数左起第一个位数位作为整数位,后面的作为小数位,然后乘以2的指数位次方。
还有一个有效位的问题,有效位就是左起第一个不是0的位开始 后面的都是有效位,因为科学计数法要保证整数部分有一位,在计算机里面表示整数就默认为在23个尾数位前面隐含一个"1”,这也是为了保证23个尾数位能够表示更多有效位。

希望能有所帮助
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马