天天看點

C語言中特殊浮點數:-1.#IND00和NAN前言性質應用

前言

在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