x
负1.1
并不显相等,比如log(x), 1/+0≠1/−0。此外,处于负下溢出和负上溢出之间的数值会被直接归为0。
(3)NAN:
如果E=0,且尾数M≠0,则表示这个值不是一个真正的值(Not A Number)。NAN又分成两类:QNAN(Quiet NAN)和SNAN(Singaling NAN)。QNAN与SNAN的不同之处在于,QNAN的尾数部分最高位定义为1,SNAN最高位定义为0;QNAN一般表示未定义的算术运算结果,如0/0, ∞×0, sqrt(−1);SNAN一般被用于标记未初始化的值,以此来捕获异常。
浮点数的表示精度一般提到浮点数的精度(有效位数)的时候,总是会出现 float的有效位为6~7位, double的有效位为15~16位 。
下面以float为例,解释一下有效位数是怎样来的。
有效位数只和规格化浮点数的尾数部分有关,而尾数部分的位数是23位,因此我们首先列出下表
由上面的表格可以看出:
2^−23 和 2^−22 之间是存在间隔的,即0.0000001和0.0000002之间的小数我们是没有办法描述的,因此23位尾数最多只能描述到小数点后第7位;此外,我们通过四舍五入可以很容易发现0.0000003=0.0000004=2^−23+2^−22
, 这表明第7位有效数字只是部分准确。而第6位及之前的都是可以准确描述的,因此我们说float的有效位为6~7位。
(1) WIKI 词条 “Floating Point”: https://en.wikipedia.org/wiki/Floating_point
(2) WIKI 词条 “IEEE floating point”: https://en.wikipedia.org/wiki/IEEE_floating_point
(2) 浮点异常值:NAN,QNAN,SNAN:
http://www.cnblogs.com/konlil/archive/2011/07/06/2099646.html
---------------------
作者:shuzfan
来源:CSDN
原文:https://blog.csdn.net/shuzfan/article/details/53814424