前言
在C語言的浮點數:float,double中存在一類特别的數:-1.#IND。我們有時會看到它。比如:
float tmp =sqrt(-);
此時tmp的值就是-#IND
IND其實就是Implementation Not define的意思,也就是說這個是未定義或者他不是一個數。
那麼-1.#IND00是如何在記憶體中存儲的呢?根據IEEE 745規定:
類别 | 正負号 | 實際指數 | 有偏移指數 | 指數域 | 尾數域 | 數值 |
---|---|---|---|---|---|---|
NaN | * | 128 | 255 | 1111 1111 | non zero | NaN |
這類數的指數位為全1,尾數域不為0.
性質
若:a=-1.#IND00
a與任何浮點數(包括自身)的比較結果都為假,即 (a==a) 是 false的
應用
可以使用if(a!=a)為真來判斷a是否為虛數。
例如:float a=sqrt(-1);
那麼:(a!=a)為true
a==a為false