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复制代码
相关文章
相关标签/搜索