社区
C语言
帖子详情
怎么解释:在Turbo C中单精度型占4个字节(32位)内存空间,其数值范围为什么是3.4E-38~3.4E+38??
ttfish
2005-09-06 09:16:27
如题,我没有搞懂,那个3.4是怎么来的?
...全文
589
9
打赏
收藏
怎么解释:在Turbo C中单精度型占4个字节(32位)内存空间,其数值范围为什么是3.4E-38~3.4E+38??
如题,我没有搞懂,那个3.4是怎么来的?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
bugebear3
2005-09-08
打赏
举报
回复
MARK
日立奔腾浪潮微软松下联想
2005-09-06
打赏
举报
回复
因为32-bit单精度浮点数:
1bit符号位,8-bit阶码(1bit符号位、7-bit有效位),23位尾数。
尾数规格化为1.xxxxx,这个1就不包括在尾数中了。
所以表示的数范围就是(+-)1.9999999 * 2 ** (+-)127。
晨星
2005-09-06
打赏
举报
回复
呵呵,你上网查查吧,偶手边也没有。
当然,并不是所有的CPU都采用IEEE的浮点数格式标准。
ttfish
2005-09-06
打赏
举报
回复
steedhorse(晨星)所言极是,
我正是要知道这个浮点数格式标准,才好理解他。
晨星
2005-09-06
打赏
举报
回复
一个float所占的32bit被分成好几个部分,至少会有4个部分,分别表示底数符号,底数,指数符号和指数。
至于为什么是3.4,不是3.5或者3.3,只能查阅详细的浮点数格式标准了。
ttfish
2005-09-06
打赏
举报
回复
一个int数据占16位,unsigned int的16位中没有符号位,所以范围是0~1111111111111111(2进制),就是0~65535,其他实型数据的范围也是这样很好理解。
书上说一个float占4个字节,范围是3.4E-38~3.4E+38,精度7位,这个肯定和2进制浮点表示有关,但是为什么是3.4E-38~3.4E+38呢?这个3.4怎么来到呢?
晨星
2005-09-06
打赏
举报
回复
如果你真想知道具体的“3.4”和“38”是怎么来的,为什么不是3.5和39,就好好研究研究IEEE的浮点数格式标准。
如果你只是想知道为什么32bit能表示那么大,那么你只需要知道浮点数是牺牲了精度来换取表示范围就可以了。你别看它能够表示那么大,却只有6位有效数字是精准的(我是说化成10进制之后)。而同样的32bit整数,虽然化成10进制后,只能表示到正负21亿左右,不到10的10次方,也就是10位数字,但每一位却都是精准无误的。
为了说明这个道理,我们可以举个类似的例子,如果你让我写出一个10的1000亿次方左右的数字,只要你不要求精度,那么很简单,我可以随便写一个,使用科学表示法:
1.23456 E 100000000000
而如果你说:“不行!不能牺牲精度,必须准确的写出每一位。”那恐怕我这这辈子也写不出这么个大数来(除了一些寿星,人一生也就能活40亿秒吧)。
这就是精度和范围的折衷。
snowbirdfly
2005-09-06
打赏
举报
回复
查一下msdn里面有介绍~
Type Name Bytes Other Names Range of Values
float 4 none 3.4E +/- 38 (7 digits)
但是为什么就不大清楚了~~`
xiaocai0001
2005-09-06
打赏
举报
回复
不知道楼主这段话从哪看来的
我也想看看。
C语言程序设计标准教程
在
Turbo
C
中
单精度
型
占
4个
字节
(32位)
内存
空间
,其
数值
范围
为3.4
E-
38~3.4E+38,只能提供七位有效数字。双精度
型
占
8 个
字节
(64位)
内存
空间
,其
数值
范围
为1.7
E-
308~1.7E+308,可提供16位有效数字。 实
型
变量说明...
计算机作业
在
Turbo
C
中
单精度
型
占
4个
字节
(32位)
内存
空间
,其
数值
范围
为3.4
E-
38~3.4E+38,只能提供七位有效数字。双精度
型
占
8 个
字节
(64位)
内存
空间
,其
数值
范围
为1.7
E-
308~1.7E+308,可提供16位有效数字
单精度
是...
Nuxt.js+BootstrapVue+Json-server 基础入门到项目实战
为什么要学习服务端渲染 nuxt.js ? 现在我们的项目大多数都是SPA(单页面应用),在实际开发过程
中
单页面应用比之前的模板渲染要好很多,首先单页面应用是前后端分离,架构清晰,前端负责交互逻辑,后端负责数据,...
python float division by zero_python float 小数位
在
Turbo
C
中
单精度
型
占
4个
字节
(32位)
内存
空间
,其
数值
范围
为3.4
E-
38~3.4E+38,只能提供七位有效数字。双精度
型
占
8 个
字节
(64位)
内存
空间
,其
数值
范围
为1.7
E-
308~1.7E+308,可提供16位有效数字。要求较小的精度将...
python的float精度_python
中
的各种小数点后的精度处理方式
目前用过最方便的: %例如:result为一个list,为result
中
每个值保留小数点后4位。result = [("%.4f" % i) for i in result]...在
Turbo
C
中
单精度
型
占
4个
字节
(32位)
内存
空间
,其
数值
范围
为3.4
E-
38~3.4E+38,只能提...
C语言
69,382
社区成员
243,073
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章