int 比 float 精度高???而 float 比int的范围大?求原因?
3个回答
展开全部
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是浮点型,浮点型数字一旦小数点后面数字多了必然会丢失精度。因为不可能小数点后面的数字无限的存下去。
int是存入整型数据。所以存入的整数是多少就是多少。不会丢失精度。
float是浮点型,浮点型数字一旦小数点后面数字多了必然会丢失精度。因为不可能小数点后面的数字无限的存下去。
更多追问追答
追问
呵呵也是啊。 都是32位,为什么一个大一个小? 大还大的很多?
追答
int32 在内存中的分配是:1bit(符号位)31bits(实际数字位)
float 在内存中的分配情况是:1bit(符号位) 8bits(指数位) 23bits(尾数位)
int32 的实际数字位决定了int32的范围;
float的指数位决定了float的范围,因为有指数位,所以范围会比int类型大很多很多。float的尾数位决定了float的精度。
float在内存中是按ieee754标准存储的。可以参看相关文档。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int 在系统编译时 开辟2个字节的空间 float类型在系统编译时开辟4个字节空间
所以处理的时候 所以范围大 i
所以处理的时候 所以范围大 i
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询