在資料處理輸入輸出時,極有可能遇到資料讀入空值(極大、極小)、運算中分母為0或0.0,對0取對數等操作,這將產生nan或inf的產生。這篇博文旨在分析c/c++產生nan和inf的操作及判斷是否有nan或inf產生。
nan: not a number,表示「無效數字」。
注意:nan是無序的(unordered),無法對其進行邏輯運算。它不大於、小於或等於任何數(包括它自己),將,<=,和》=作用於nan產生乙個exception。得到nan時就檢視是否有非法操作,如果表示式中含有nan,那麼表示式的結果為nan。
inf:infinite,表示「無窮大」。
超出浮點數的表示範圍(溢位,即階碼部分超過其能表示的最大值)。
注意:+inf大於任何數(除了它自己和nan),-inf小於任何數(除了它自己和nan),得到inf時就檢視是否有溢位或者除以0。inf在c語言表示式中就表示數學裡無限的概念,如1.0/inf等於0.0,並可以與其他浮點數進行比較的(可以參與<=、>+、==、!=等運算)。
下面幾個巨集即包含在math.h標頭檔案,可用於判斷乙個表示式的結果是否為inf、nan或其他。使用時包括include。
int isfinite(x);
int isnormal(x);
int isnan(x);
int isinf(x);
使用方法,及結果:
int isfinite(x) ,判斷x是否有限,是返回1,其它返回0;
int isnormal(x),判斷x是否為乙個數(非inf或nan),是返回1,其它返回0;
int isnan(x),當x時nan返回1,其它返回0;
int isinf(x) ,當x是正無窮是返回1,當x是負無窮時返回-1,其它返回0。有些編譯器不區分。
產生nan或inf的操作,使用庫函式(巨集)判斷,直接參考原文。
原文:
段碼屏中出現黑色斑點什麼原因?
前段時間,網上乙個客戶來跟晶拓液晶客服諮詢 我用的段碼液晶屏中有黑色斑點或者斑塊。接著客戶發來 一看,見下圖 這是屬於不良品,為漏液晶現象。今天給大家 下發生此類漏液晶現象的原因有哪些。段碼液晶屏出現漏液晶現象一般分為兩種,首先的一種情況很容易說得明白,就是玻璃出現裂紋或者破損,所以出現漏液晶現象。...
數字在排序陣列中出現的次數 C C
顯然陣列中數字可以出現多次。排序陣列,要求時間高效,肯定要用二分查詢 只是這裡要查詢的元素可能出現多次。所以需要對經典的二分查詢稍作改變。非遞迴演算法如下 include using namespace std 函式返回找到的陣列下標,沒找到返回 1。wantleft為true 查詢最左的val 否...
移動app測試中出現bug漏測的原因分析
bug 其實是任何產品都無法避免的乙個問題,不是所有的 bug 都能被發現,包括資深測試,或多或少的會出現線上缺陷,誰也不能把軟體所有的功能操作 運用場景想周全。雖說不能做到完全零缺陷,但是每次發布的產品,我們需要追求缺陷越來越少,產品投訴越來越少。為什麼會出現缺陷漏測,主要有以下幾點 需求評審階段...