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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄昆 中级黑马   /  2012-7-10 09:10  /  1247 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

int和float都是四个字节,为什么int和float的存储范围却不相同呢?求解释

3 个回复

正序浏览
万宝东 发表于 2012-7-10 09:45
虽然他们都是4字节32位,但是他们每一位表示的东西不一样
int四个字节32位中的右边31位都用来装数据,左边 ...

学习了。 哥们再详细的说下别的数据类型呗。
回复 使用道具 举报
虽然他们都是4字节32位,但是他们每一位表示的东西不一样
int四个字节32位中的右边31位都用来装数据,左边最高为是符号位。所以就是,-2的31次方到2的31次方减1
float:1bit(符号位) 8bits(指数位) 23bits(尾数位),所以float的指数范围为-127~+128,所以float的范围为-2^128 ~ +2^128,也即-3.40E+38 ~ +3.40E+38;

评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 赞一个!

查看全部评分

回复 使用道具 举报
数据float表示-3.4E+38~3.4E+38
数据int的取值范围只有-214783648~214783647

因为他们的存储格式不一样,float型的二进制位里面有一部分表示幂数,这就好比一个是普通计数法(int)一个是科学计数法(float)一样,科学计数法总是能用更少的文字表示更大的范围,多一个零只需要增加一次幂就可以了。不过建议你能使用Int和long的时候尽量不要使用float,因为一味的使用float会导致程序效率和质量降低。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马