黑马程序员技术交流社区

标题: 关于int和float的使用问题 [打印本页]

作者: 吴刚    时间: 2012-11-3 12:58
标题: 关于int和float的使用问题
我知道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的精度大啊,啥意思,求科普啊。
作者: 齐连涛    时间: 2012-11-3 15:04
float和double的精度是由尾数的位数来决定的。浮点数在内存中是按科学计数法来存储的,其整数部分始终是一个隐含着的“1”,
由于它是不变的,故不能对精度造成影响。
float:2^23 = 8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字;
作者: 吴刚    时间: 2012-11-3 21:21
齐连涛 发表于 2012-11-3 15:04
float和double的精度是由尾数的位数来决定的。浮点数在内存中是按科学计数法来存储的,其整数部分始终是一 ...

是不是可以这样理解,float的进度是7位就是说小数点后面是7位小数吗,还有你说的浮点数在科学计数法存储的,隐含着“1”,是什么意思。。。。。
作者: 齐连涛    时间: 2012-11-5 11:09
吴刚 发表于 2012-11-3 21:21
是不是可以这样理解,float的进度是7位就是说小数点后面是7位小数吗,还有你说的浮点数在科学计数法存储 ...

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

希望能有所帮助




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2