c++ float 計算時注意點

liuhongyi0101發表於2018-11-15

做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複製程式碼


相關文章