在此行中获取错误double b3 = pow(log(abs(pow((y / z), 1.0 / 3.0))), 0.3);
无法弄清楚为什么,如果log()内的值总是正的
代码如下:
double x = 0.48 * 5, y = 0.47 * 5, z = -1.32 * 5;
void Count::Fn_b(double x, double y, double z)
{
double b1 = x*x + z*z / pow(tan(pow(abs(x), 2.0)), 2.0);
double b2 = 3 + x + y*y / Factr(2) + pow(z, 3.0) / Factr(3);
double b3 = pow(log(abs(pow((y / z), 1.0 / 3.0))), 0.3);
b = b1 / b2 + b3;
}
答案 0 :(得分:-1)
那么,对于1/3(或任何其他具有奇数分母的分数幂)的幂,您可以轻松调整代码以测试值是否为负值,如果是,则取绝对值,即适当的根,然后将结果乘以-1。 每个程序员应该能够做的非常基础的数学。
例如:(-27)^(1/3) = -(27^(1/3)) = -3
。
在其他情况下,您必须使用复数。例如:(-4)^(1/2)
等于-2i
(其中i是一个虚数,i^2
等于1
。
这就是为什么你应该经常听学校的数学老师......