我要做一个运算程序,其中用到下面的结果
float  a =pow((EP1+5.064*0.0001),-0.9);
其中EP1是double类型的变量,大约为0.0019 但是我算出的a值为-1.#IND00000000000但是如果我写a=pow((0.0019+5.064*0.0001),-0.9);则能酸楚来。pow函数该怎么用,请高手指点,因为我的变量EP1是变化的,不能用常数。

解决方案 »

  1.   

    我这里计算结果是正确的227.389
    断下点来调来一下,看一吓执行到那句话,EIP的值是多少
      

  2.   

    double TI1,TI2,SCA,EP1,TP1;
    TI1=250.0;          
    TI2=300.0;
    TP1=TI1-TI2;
    EP1=TP1*(3.23093*pow(10.0,-5.0)+2.66133*pow(10.0,-8.0)*TI1-1.28575*pow(10.0,-11.0)*pow(TI1,2.0));
    SCA=0.004*pow((EP1+5.064*0.0001),-0.9)+0.055;
    SCA 算出来就是-1.#IND000000000不知道为什么,高手指点指点
      

  3.   

    其中EP1是double类型的变量,大约为0.0019 但是我算出的a值为-1.#IND00000000000
    ===============================================================================EP1=TP1*(3.23093*pow(10.0,-5.0)+2.66133*pow(10.0,-8.0)*TI1-1.28575*pow(10.0,-11.0)*pow(TI1,2.0));///我试了一下这个结果大约为 -0.0019,是个负数
      

  4.   

    .#IND000000000表示你的数学表达式中包含了目前数学上不可能计算的东西,
    如分母为零,
    开负数的平方,估计求负数的负小数次方也是不被允许的pow(-3,-0.9)还有可能越界或超过了某数据类型的精度造成,但这点在你上面好象不会出现,
    double型最小要到-1.7*10的(-308)况且我试了一下用long double 的powl()也不行,所以应该是第一种情况了,还有谁有想法???
      

  5.   

    long double dEP1=TP1*(3.23093*pow(10.0,-5.0)+2.66133*pow(10.0,-8.0)*TI1-1.28575*pow(10.0,-11.0)*pow(TI1,2.0));
    long double sdf = dEP1+5.064*0.0001;
    long double ld = 0.004*powl(sdf,-0.9)+0.055;
    }只有到最后一步时出错
    别说sdf的值是-0.00014,就随变一个负数都错
      

  6.   

    double TI1,TI2,SCA,EP1,TP1;
    TI1=250.0;          
    TI2=300.0;
    TP1=TI1-TI2;
    EP1=TP1*(3.23093*pow(10.0,-5.0)+2.66133*pow(10.0,-8.0)*TI1-1.28575*pow(10.0,-11.0)*pow(TI1,2.0));
    SCA=0.004*pow((EP1+5.064*0.0001),-0.9)+0.055;
    SCA 算出来就是-1.#IND000000000我写了一个计算器,支持变量,把你的代码粘贴进去,最后结果就是那么多,莫非我的计算器设计错了。
      

  7.   

    EPI和EP1是不同的,是不是这两个变量都在用