特殊浮點數1 IND 1 INF的判斷

2021-07-07 08:52:08 字數 794 閱讀 7363

一、特殊浮點數的含義

1.#inf / inf:這個值表示「無窮大 (infinity 的縮寫)」,即超出了計算機可以表示的浮點數的最大範圍(或者說超過了 double 型別的最大值)。例如,當用 0 除乙個整數時便會得到乙個1.#inf / inf值;相應的,如果用 0 除乙個負整數也會得到 -1.#inf / -inf 值。

-1.#ind / nan:這個的情況更複雜,一般來說,它們來自於任何未定義結果(非法)的浮點數運算。"ind"是 indeterminate 的縮寫,而"nan"是 not a number 的縮寫。產生這個值的常見例子有:對負數開平方,對負數取對數,0.0/0.0,0.0*∞, ∞/∞ 等。

二、特殊浮點數的判斷

c 庫提供了一組函式用來判斷乙個浮點數是否是無窮大或 nan。

int _isnan(double x) 函式用來判斷乙個浮點數是否是nan,而 int

_finite(double x) 用以判斷乙個浮點數是否是無窮大。

使用時要 #include "float.h"

也可以用下面的**實現:

bool isnumber(double x)

而下面的**可以判斷乙個浮點數是否是有限的(finite,

即既不是 nan 又不是 infinite):

bool isfinitenumber(double x)

其中,dbl_max 是 中預定義的常量:

#define dbl_max 

1.7976931348623158e+308

C語言中特殊浮點數 1 IND00和NAN

在c語言的浮點數 float,double中存在一類特別的數 1.ind。我們有時會看到它。比如 float tmp sqrt 1 此時tmp的值就是 1.indind其實就是implementation not define的意思,也就是說這個是未定義或者他不是乙個數。那麼 1.ind00是如何在...

浮點數的比較 1

在數 算當中經常會涉及到判斷兩個數是否相等的情況 對於整數很好處理 a b這樣的乙個語句就可以解決全部的問題 但是對於浮點數是不同的 1.浮點數在計算機當中的二進位制表達方式就決定了大多數浮點數都是無法精確的表達的 現在的計算機大部分都是 數字計算機,不是模擬機,數字機的離散化的資料表示方法自然無法...

1 浮點數近似規則

保留位 guard bit 近似位 round bit 和粘滯位 sticky bit 保留位 近似後的最低位 近似位 保留位的後一位 粘滯位 近似位後的所有位進行或運算後視作一位 truncation 截斷,捨去,因為浮點數的位數是固定的,計算中多出來的位數需要利用一些規則進行捨去 比如四捨五入 ...