浮点数原理解析和相关问题分析(博文整理)

目录

1.浮点数的原理简析

1.1.存储格式

1.2.原理

1.3.分类

1.3.1.有限数

1.3.2.零

1.3.3.弱规范数

1.3.4.无穷大

1.3.5.NaN

1.4.特殊的数

1.4.1.最小的正float有限数

1.4.2.最大的float有限数

1.4.3.最小的正float弱规范数

1.4.4.FLT_EPSILON

1.5.结语

2.浮点数比较大小的问题


1.浮点数的原理简析

1.1.存储格式

  我平时在写浮点数相关的代码时,经常会用一些可笑的技巧来“规避”浮点数运算导致的随机误差,浮点数运算细节晦涩难懂,我确实一直对浮点数原理及其运算一知半解,写起代码来战战兢兢,本文参考刘纯根所著的《浮点计算——编程原理、实现与应用》,把浮点数的原理简单梳理一遍(主要以float为例),作为笔记,以备查验。

IEEE754标准规定,浮点数由“符号”、“指数”和“尾数”3部分构成:

                                   

下表列出C++中不同精度浮点数内存布局: 

1.2.原理

1.3.分类

1.3.1.有限数

1.3.2.零

1.3.3.弱规范数

1.3.4.无穷大

1.3.5.NaN

1.4.特殊的数

1.4.1.最小的正float有限数

1.4.2.最大的float有限数

1.4.3.最小的正float弱规范数

1.4.4.FLT_EPSILON

1.5.结语

  浮点运算,深奥、晦涩、难懂!我们对浮点运算的所有想当然的假设可能都是不靠谱的。正如Herb Sutter所说,世界上的人可以分3种:
  ● 一种是知道自己不懂浮点运算(我就是);
  ● 一种是以为自己懂浮点运算;
  ● 最后一种是极少的专家级人物,他们想知道自己是否有可能最终完全理解浮点运算。

2.浮点数比较大小的问题

最后附上被整理的两篇博文:

https://blog.csdn.net/whyel/article/details/81067989

https://blog.csdn.net/liujian20150808/article/details/50630546

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值