目录
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