我要做一个运算程序,其中用到下面的结果
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是变化的,不能用常数。
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是变化的,不能用常数。
断下点来调来一下,看一吓执行到那句话,EIP的值是多少
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不知道为什么,高手指点指点
===============================================================================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,是个负数
如分母为零,
开负数的平方,估计求负数的负小数次方也是不被允许的pow(-3,-0.9)还有可能越界或超过了某数据类型的精度造成,但这点在你上面好象不会出现,
double型最小要到-1.7*10的(-308)况且我试了一下用long double 的powl()也不行,所以应该是第一种情况了,还有谁有想法???
long double sdf = dEP1+5.064*0.0001;
long double ld = 0.004*powl(sdf,-0.9)+0.055;
}只有到最后一步时出错
别说sdf的值是-0.00014,就随变一个负数都错
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我写了一个计算器,支持变量,把你的代码粘贴进去,最后结果就是那么多,莫非我的计算器设计错了。