什么是“-1.#IND”?

Ror*_*can 4 c++ floating-point

我有一些代码可以让我绘制新月形状,并提取了要绘制的值。然而,有些数字已经到位了-1.#IND。首先,如果有人可以解释这意味着什么,因为谷歌返回了 0 个链接。其次是否有办法阻止它发生。

我的代码有一个简短的类比。除此之外我还有很多代码,但这只是计算角度。

for(int j=0; j<=n; j++)//calculation for angles and output displayed to user
{
    Xnew2 = -j*(Y+R1)/n; //calculate x coordinate
    Ynew2 = Y*(pow(1-(pow((Xnew2/X),2)),0.5));
    if(abs(Ynew2) <= R1)
        cout<<"\n("<<Xnew2<<", "<<Ynew2<<")"<<endl;
}
Run Code Online (Sandbox Code Playgroud)

更多信息

我现在遇到这个代码的问题。

for(int i=0; i<=n; i++) //calculation for angles and output displayed to user
{                                          
    Xnew = -i*(Y+R1)/n; //calculate x coordinate
    Ynew = pow((((Y+R1)*(Y+R1)) - (Xnew*Xnew)), 0.5); //calculate y coordinate
Run Code Online (Sandbox Code Playgroud)

for(int j=0; j<=n; j++)//calculation for angles and output displayed to user
{
    Xnew2 = -j*(Y+R1)/((n)+((0.00001)*(n==0))); //calculate x coordinate
    Ynew2 = Y*(pow(abs(1-(pow((Xnew2/X),2))),0.5));
    if(abs(Ynew2) <= R1)
        cout<<"\n("<<Xnew2<<", "<<Ynew2<<")"<<endl;
Run Code Online (Sandbox Code Playgroud)

我在绘制新月时遇到问题,无法让两个圆具有相同的起点?如果这是有道理的,我试图让圆的两个部分画出新月,使它们具有相同的起点和终点。我必须处理的唯一用户输入是半径和选择的中心点。

如果有人对如何做到这一点有任何建议,那就太好了,由于圆圈没有连接,目前我得到的只是“半甜甜圈”形状。

Moh*_*oun 5

#IND表示不确定的形式。

\n\n

你所拥有的就是简称为\'Not a number\'NaN东西。

\n\n

引用维基百科,生成是通过以下方式完成的:

\n\n
\n
    \n
  • 使用 NaN 作为至少一个操作数的运算。
  • \n
  • 划分 0/0 和 \xc2\xb1\xe2\x88\x9e/\xc2\xb1\xe2\x88\x9e
  • \n
  • 乘法 0\xc3\x97\xc2\xb1\xe2\x88\x9e 和 \xc2\xb1\xe2\x88\x9e\xc3\x970
  • \n
  • 加法 \xe2\x88\x9e + (\xe2\x88\x92\xe2\x88\x9e), (\xe2\x88\x92\xe2\x88\x9e) + \xe2\x88\x9e 和等效减法
  • \n
  • 负数的平方根。
  • \n
  • 负数的对数
  • \n
  • 小于 \xe2\x88\x921 或大于 +1 的数字的反正弦或余弦。
  • \n
\n
\n\n

你至少正在做其中一件事情。

\n\n

编辑:

\n\n

分析你的代码后,有两种可能性:

\n\n
    \n
  • n == 0在第一次迭代时j == 0,也Xnew2将是-1.#IND
  • \n
  • Xnew2大于 时XYnew2将是复数 ->NaN
  • \n
\n