为什么float有效位是7,最准确的是6

hereIambabe 2018-04-22 08:36:03
我在网上看到的都是
都是因为float有23位尾数+1位隐藏位然后2的24次方取log以10为底的对数就是7.多,就取7了
希望大家可以解释一下这个原理。。。。。。真的很想弄懂
...全文
1140 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
AlbertS 2018-04-23
  • 打赏
  • 举报
回复
引用 2 楼 paschen 的回复:
2^23 = 8388608,结果是7位数,最多能表示7位有效数字,但绝对能保证的则是6位
就是这个意思了,8388608以下的保证7位,8388608以上的数字可以保证6位
赵4老师 2018-04-23
  • 打赏
  • 举报
回复
理解讨论之前请先学会如何观察! 浮点数格式 http://bbs.csdn.net/topics/390676437
paschen 2018-04-23
  • 打赏
  • 举报
回复
引用 1 楼 papaweilun的回复:
我不太懂为什么要用2的24次方。。。。。。这是因为这样子表示有2的24次方个数可以被表达吗?
每一位有0和1两种状态,N个位就可以表示 2^N个值
paschen 2018-04-22
  • 打赏
  • 举报
回复
这里说的有效位是小数点后的位数,而隐藏的1位不是小数点后的
paschen 2018-04-22
  • 打赏
  • 举报
回复
2^23 = 8388608,结果是7位数,最多能表示7位有效数字,但绝对能保证的则是6位
hereIambabe 2018-04-22
  • 打赏
  • 举报
回复
我不太懂为什么要用2的24次方。。。。。。这是因为这样子表示有2的24次方个数可以被表达吗?

69,336

社区成员

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

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