做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复制代码