float的尾数部分为什么是23位?精度为什么是7位?

博客园铁粉 2016-11-25 06:50:39

这个图上的尾数部分标明着是23位,这个23是怎么来的?是规定的还是计算出来的?
然后2的23次方是8388608,一共七位,所以精度是七位,为什么呢?
这个精度是指的什么?是指的小数点后面的七位比如1.2345678,还是一共七位比如123456.7?

帖子参考http://www.cnblogs.com/lonelyxmas/p/4079574.html
...全文
1138 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
无无君 2020-09-06
  • 打赏
  • 举报
回复
楼主搞懂了吗?
  • 打赏
  • 举报
回复
通常我们在手工处理中,可以用“科学记数法”来表示数字,然后再来说它的整数部分。比如说 1234567e-9 就是科学记数法,它明确地分为“指数部分+整数部分”。如果再加上正负符号,那么就是你的图所标示的东西了。 不过有些规范是 0.1234567e-2 这种形式的,也就是你的“尾数”部分的规范不同。
  • 打赏
  • 举报
回复
比如说0.001234567 这就是7位,因为它是 1234567e-9 ---> 实际上,这里说是 0.1234567e-2 更准确。
xuzuning 2016-11-27
  • 打赏
  • 举报
回复
说是 精度 是不准确的,因为通常我们说的精度是指 精确到小数点后第几位 而这里说的 7 位 是有效数 1234567000000、0.001234567 至于说为什么指数部分为 8个 二进制位,那是因为 IEEE-754 指定时只有 8位机
  • 打赏
  • 举报
回复
引用 楼主 h2041075 的回复:
这个精度是指的什么?是指的小数点后面的七位比如1.2345678,还是一共七位比如123456.7?
7位精度,不管小数点在哪里。比如说0.001234567 这就是7位,因为它是 1234567e-9。
  • 打赏
  • 举报
回复
引用 4 楼 h2041075 的回复:
[quote=引用 3 楼 tcmakebest 的回复:] 32-1-8 = 23 2^ -23 = 0.0000001192 所以精度是 7位.
1位符号位我懂,8位指数位是怎么来的?是规定的吗还是计算出来的? 剩下的23位就是精度位对吧,也就是说二进制的时候精度有23位。可是换成十进制2^23=8388608,确实是7个数字没错,可是为什么精度是7位呢?[/quote] “7位精度”是指十进制数,所以“7位精度”也就等于是“23位精度”。
秋的红果实 2016-11-26
  • 打赏
  • 举报
回复
图里面说的是二进制的位,数在内存中的表示,不是十进制数的位数,两码事
博客园铁粉 2016-11-25
  • 打赏
  • 举报
回复
引用 3 楼 tcmakebest 的回复:
32-1-8 = 23 2^ -23 = 0.0000001192 所以精度是 7位.
1位符号位我懂,8位指数位是怎么来的?是规定的吗还是计算出来的? 剩下的23位就是精度位对吧,也就是说二进制的时候精度有23位。可是换成十进制2^23=8388608,确实是7个数字没错,可是为什么精度是7位呢?
tcmakebest 2016-11-25
  • 打赏
  • 举报
回复
32-1-8 = 23 2^ -23 = 0.0000001192 所以精度是 7位.
Poopaye 2016-11-25
  • 打赏
  • 举报
回复
精度是指一共七位比如123456.7
Poopaye 2016-11-25
  • 打赏
  • 举报
回复
标准 IEEE-754

111,079

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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