int 比 float 精度高???而 float 比int的范围大?求原因?

如题所述

int比float精度小。float比int的范围大。

int是用于定义整数类型变量的标识符。占用4字节,32比特,数据范围为-2147483648~2147483647[-2^31~2^31-1]。

FLOAT数据类型用于存储单精度浮点数或双精度浮点数。浮点类型的单精度值具有4个字节,包括一个符号位、一个8位二进制指数和一个23位尾数。此表示形式为float类型提供了一个大约在-3.4E+38~3.4E+38之间的范围。

扩展资料:

FLOAT的浮点包可以将二进制浮点数存储为非标准化数。非标准化数是带有保留指数值的非零浮点数,其中尾数的最高有效位为0。通过使用非标准化格式,浮点数的范围可以扩展,但会失去精度。无法控制浮点数以标准化形式还是非标准化形式表示。

浮点包决定了表示形式。浮点包从不使用非标准化形式,除非指数变为小于可以标准化形式表示的最小值。由于指数是以无符号形式存储的,因此指数的偏差为其可能值的一半。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-24
其实,我觉得这两个是不同质的东西,不同质的东西不能进行量的比较。
int是存入整型数据。所以存入的整数是多少就是多少。不会丢失精度。
float是浮点型,浮点型数字一旦小数点后面数字多了必然会丢失精度。因为不可能小数点后面的数字无限的存下去。追问

呵呵也是啊。 都是32位,为什么一个大一个小? 大还大的很多?

追答

int32 在内存中的分配是:1bit(符号位)31bits(实际数字位)
float 在内存中的分配情况是:1bit(符号位) 8bits(指数位) 23bits(尾数位)
int32 的实际数字位决定了int32的范围;
float的指数位决定了float的范围,因为有指数位,所以范围会比int类型大很多很多。float的尾数位决定了float的精度。
float在内存中是按ieee754标准存储的。可以参看相关文档。

追问

明白,bite 的最小值是-10000000,这不是0吗?怎么是-128? 最后一个问题?谢谢。

追答

数字在内存中的实际存储方式有补码和源码两种形式。可以参看下补码方面的文档。

追问

说说你的理解??

追答

1bit 在内存中以原码存储最小是0111111,也就是-128
如果以补码存储最小就是10000000,也是-128

追问

有没有搞错?01111111 不是 127 吗? 怎么成了 -128 了?

追答

不好意思,错了,原码存储只能最小-127

本回答被提问者采纳
第2个回答  2011-12-18
int 在系统编译时 开辟2个字节的空间 float类型在系统编译时开辟4个字节空间
所以处理的时候 所以范围大 i

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网