float类型的范围问题~~

pokerlee 2014-01-04 08:36:41
float的指数范围为-127~+128,而double的指数范围为-1023~+1024,并且指数位是按补码的形式来划分的。
其中负指数决定了浮点数所能表达的绝对值最小的非零数;而正指数决定了浮点数所能表达的绝对值最大的数,也即决定了浮点数的取值范围,float的范围为-2^128 ~ +2^128。
哪位大侠指点一下范围-2^128~+2^128是怎么来的~~跪求指点啊~~
...全文
414 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
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是怎么来的~~跪求指点啊~~

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧