在c++中对double使用sqrt函数后结果变成-1#IND

2024-12-30 05:03:43
推荐回答(3个)
回答1:

b=8.23*(10^(-3));p=0.101*(10^6);d=0.005;n=1.83*(10^(-5))

在c语言中^是表示异或的意思,故这里的b,p,n都是负数了,应该改为用pow函数:

#include 
#include 
using namespace std;
int main()
{
    double a,g,l,b,p,d,n,U,tg,vg,r1,r2,q,pi;
    a=981;g=9.8;l=0.002;
    b=8.23*pow(10,-3);
    p=0.101*pow(10,6);
    d=0.005;
    n=1.83*pow(10,-5);
    pi=3.14;
    cout<<"U:";
    cin>>U;
    cout<<"tg:";
    cin>>tg;
    vg=(l/tg)*10000;
    r1=9*n*vg/2/a/g;
    r2=sqrt(r1);
    q=18*pi*d/U/sqrt(2*a*g)*(sqrt(n*l/tg/(1+b/p/r2)))*(sqrt(n*l/tg/(1+b/p/r2)))*(sqrt(n*l/tg/(1+b/p/r2)));
    cout<    return 0;
}

回答2:

一般都是对负数进行sqrt才会导致这样,你调试看看,是不是用了负数。

回答3:

看看是不是对负数用sqrt了