如题所述
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。通过使用非标准化格式,浮点数的范围可以扩展,但会失去精度。无法控制浮点数以标准化形式还是非标准化形式表示。
浮点包决定了表示形式。浮点包从不使用非标准化形式,除非指数变为小于可以标准化形式表示的最小值。由于指数是以无符号形式存储的,因此指数的偏差为其可能值的一半。
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
本回答被提问者采纳所以处理的时候 所以范围大 i