得到“-1#IND”错误

时间:2017-09-17 19:19:34

标签: c++

在此行中获取错误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;
    }

1 个答案:

答案 0 :(得分:-1)

那么,对于1/3(或任何其他具有奇数分母的分数幂)的幂,您可以轻松调整代码以测试值是否为负值,如果是,则取绝对值,即适当的根,然后将结果乘以-1。 每个程序员应该能够做的非常基础的数学。

例如:(-27)^(1/3) = -(27^(1/3)) = -3

在其他情况下,您必须使用复数。例如:(-4)^(1/2)等于-2i(其中i是一个虚数,i^2等于1

这就是为什么你应该经常听学校的数学老师......

相关问题