float类型的范围问题~~

pokerlee 2014-01-04 08:36:41
float的指数范围为-127~+128,而double的指数范围为-1023~+1024,并且指数位是按补码的形式来划分的。
其中负指数决定了浮点数所能表达的绝对值最小的非零数;而正指数决定了浮点数所能表达的绝对值最大的数,也即决定了浮点数的取值范围,float的范围为-2^128 ~ +2^128。
哪位大侠指点一下范围-2^128~+2^128是怎么来的~~跪求指点啊~~
...全文
178 点赞 收藏 6
写回复
6 条回复
lming_08 2014年01月05日
楼主可以看看IEEE754标准中浮点数的存储 指出一点,指数是用移码表示的,将移码减去127就是指数的真值
回复 点赞
derekrose 2014年01月05日
记住一点就行了,计算机没有十个手指
回复 点赞
t59616 2014年01月05日
楼主理解有误差,实际上,对于浮点型来说,在内存中,把一个浮点型数据分成小数部分和指数部分进行存储,在计算机中用二进制数来表示小数部分,用2的幂次来表示指数部分,而且对于浮点型的数值范围,在Turbo C,Turbo C++6.0,MS C中,float类型的数值范围是(-3.4*10^-38~3.4*10^38),而在ANSI C中,并未具体规定每种类型数据的长度,精度和数值范围,所以不必太在意数值问题。
回复 点赞
图灵狗 2014年01月04日
因为是二进制的数。
引用 2 楼 pokerLee 的回复:
[quote=引用 1 楼 turingo 的回复:] 由指数范围决定的。 [quote=引用 楼主 pokerLee 的回复:] float的指数范围为-127~+128,而double的指数范围为-1023~+1024,并且指数位是按补码的形式来划分的。 其中负指数决定了浮点数所能表达的绝对值最小的非零数;而正指数决定了浮点数所能表达的绝对值最大的数,也即决定了浮点数的取值范围,float的范围为-2^128 ~ +2^128。 哪位大侠指点一下范围-2^128~+2^128是怎么来的~~跪求指点啊~~
[/quote]为什么底数为2呢~~指数只是用8位内存表示了~~突然冒出来个2当底数~~求指点~~[/quote]
回复 点赞
pokerlee 2014年01月04日
引用 1 楼 turingo 的回复:
由指数范围决定的。 [quote=引用 楼主 pokerLee 的回复:] float的指数范围为-127~+128,而double的指数范围为-1023~+1024,并且指数位是按补码的形式来划分的。 其中负指数决定了浮点数所能表达的绝对值最小的非零数;而正指数决定了浮点数所能表达的绝对值最大的数,也即决定了浮点数的取值范围,float的范围为-2^128 ~ +2^128。 哪位大侠指点一下范围-2^128~+2^128是怎么来的~~跪求指点啊~~
[/quote]为什么底数为2呢~~指数只是用8位内存表示了~~突然冒出来个2当底数~~求指点~~
回复 点赞
图灵狗 2014年01月04日
由指数范围决定的。
引用 楼主 pokerLee 的回复:
float的指数范围为-127~+128,而double的指数范围为-1023~+1024,并且指数位是按补码的形式来划分的。 其中负指数决定了浮点数所能表达的绝对值最小的非零数;而正指数决定了浮点数所能表达的绝对值最大的数,也即决定了浮点数的取值范围,float的范围为-2^128 ~ +2^128。 哪位大侠指点一下范围-2^128~+2^128是怎么来的~~跪求指点啊~~
回复 点赞
发动态
发帖子
C语言
创建于2007-09-28

3.2w+

社区成员

24.0w+

社区内容

C语言相关问题讨论
社区公告
暂无公告