c++ float 計算時注意點

作3d幾何計算時常常要處理浮點數。c++

1.  與 0 比較,首先浮點數沒有0,通常用1e-6 代替,無限接近。bash

const float a= 0.001;
if(a<1e-6) 複製代碼

2. 無窮數 infinityui

const float a = 1.0,b = 0.0;
bool result =  isinf(a/b);

result --- true複製代碼

3. 非數字,好比複數等,c++ 沒有複數類型,因此爲無效數。spa

注意事項:對負數開方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)。
3d

const c = 0.0;
bool result  = isnan(c/c);

 result --- true複製代碼
相關文章
相關標籤/搜索