C++浮点数为nan

Ali*_*iBZ 6 c++ floating-point nan

我想知道是什么使得c ++中的浮点数为nan.我使用的是大型数据集,很难追踪.我想知道将浮点数更改为nan以减少bug可能性的方法.

我找到了导致nan问题的代码.我发现在某些情况下s/m是nan.但我不知道如何解决它.

float gp(float x){
float e = 2.71828183;
x *= -1;
float s = pow(e,x);
float m = (1 + pow(e,x)) * (1 + pow(e,x));  
return s / m;}
Run Code Online (Sandbox Code Playgroud)

Ron*_*del 5

取自维基百科 - >特殊值 - >南

  • 0/0
  • ∞×0
  • 开方(-1)
  • 一般"无效操作"(我不确定是否有不超过上述三个)

看着你的代码:无限时间0是可能的,是吗?

编辑:

  • 0 <= s <= + inf

  • 1 <= m <= + inf

s/m:

  • + inf/+ inf确实会减去NaN(我测试了它)

我认为这是制造NaN的唯一因素.


Dav*_* L. 5

如果你可以保持x在0和FLT_MAX(在我的情况下为3.40E + 38),你的gp函数将不会返回NaN.

在此输入图像描述