c++ float 计算时注意点

本文深入探讨了3D几何计算中处理浮点数的常见问题及解决方案,包括与0的比较、无穷数和非数字的判断。通过具体示例,如使用1e-6替代0进行比较,检查无穷数和非数字(NaN)的出现,帮助读者理解并避免浮点运算中的陷阱。

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


转载于:https://juejin.im/post/5bed6964f265da61483b2e0c

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值