基本上數值運算確實有一些本來就是無解的情況,程式也只是一個大型的計算機,一樣算不出來的,只是也沒辦法給你更多的訊息,只能從現有的資訊去推測,然後把原始運算輸出來看是哪種無解
不過如果自己的計算過程不存在這樣的情形,就反過來檢查哪邊寫了不該出現的算式了
這些錯誤訊息,基本上都表示NAN(未定義或者不可表示)
可以直接呼叫函式判斷是不是這兩種
需要#include <math.h>
isnan()
輸出為1是NAN的情況,0則是正常數值
另一個有在文章看到的是isinf() 針對判斷無限大的,應該可以針對無窮大
針對無解的情況應該只有分成這兩種了NAN跟INF
Output | Meaning |
---|---|
1#INF | Positive infinity |
-1#INF | Negative infinity |
1#SNAN | Positive signaling NaN |
-1#SNAN | Negative signaling NaN |
1#QNAN | Positive quiet NaN |
-1#QNAN | Negative quiet NaN |
1#IND | Positive indefinite NaN |
-1#IND | Negative 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使用
沒有留言:
張貼留言