2016年7月1日 星期五

-1.#IND -1#INF代表什麼意思?

在做一些矩陣運算的時候,會有算不出結果的時候,C沒有像MATLAB會對於這些數值運算給予更多資訊,這不是程式語言的問題,應該是IDE幫使用者做多少事情

基本上數值運算確實有一些本來就是無解的情況,程式也只是一個大型的計算機,一樣算不出來的,只是也沒辦法給你更多的訊息,只能從現有的資訊去推測,然後把原始運算輸出來看是哪種無解

不過如果自己的計算過程不存在這樣的情形,就反過來檢查哪邊寫了不該出現的算式了

這些錯誤訊息,基本上都表示NAN(未定義或者不可表示)

可以直接呼叫函式判斷是不是這兩種
需要#include <math.h>
isnan() 
輸出為1是NAN的情況,0則是正常數值

另一個有在文章看到的是isinf() 針對判斷無限大的,應該可以針對無窮大

針對無解的情況應該只有分成這兩種了NAN跟INF

OutputMeaning
1#INFPositive infinity
-1#INFNegative infinity
1#SNANPositive signaling NaN
-1#SNANNegative signaling NaN
1#QNANPositive quiet NaN
-1#QNANNegative quiet NaN
1#INDPositive indefinite NaN
-1#INDNegative indefinite NaN


第一次搜尋一下後面代表的意義

isnan - test for a NaN

NAN 維基/WIKI

What does -1.#IND mean?: A survey of how the Visual C runtime library prints special floating point values

IEEE floating-point exceptions in C++

What do 1.#INF00, -1.#IND00 and -1.#IND mean?

 [浮點數] C/C++ 浮點數特殊值

20.5.2 Infinity and NaN

What Every Computer Scientist Should Know About Floating-Point Arithmetic

C語言中的nan和inf使用

沒有留言:

張貼留言

ADGuard