做3d幾何計算時經常要處理浮點數。
1. 與 0 比較,首先浮點數沒有0,一般用1e-6 代替,無限接近。
const float a= 0.001;
if(a<1e-6) 複製程式碼
2. 無窮數 infinity
const float a = 1.0,b = 0.0;
bool result = isinf(a/b);
result --- true複製程式碼
3. 非數字,比如複數等,c++ 沒有複數型別,所以為無效數。
注意事項:對負數開方sqrt(-1.0)、對負數求對數(log(-1.0))、0.0/0.0、0.0*inf、inf/inf、inf-inf這些操作都會得到nan。(0/0會產生操作異常;0.0/0.0不會產生操作異常,而是會得到nan)。
const c = 0.0;
bool result = isnan(c/c);
result --- true複製程式碼