2017-09-17 43 views
-2

得到的錯誤在這行double b3 = pow(log(abs(pow((y/z), 1.0/3.0))), 0.3); 想不通爲什麼,如果日誌內)的值(總爲正 下面的代碼:獲得一個「-1#IND」錯誤

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; 
    } 
+2

請創建一個。 [mcve]。 – Rakete1111

+0

我不明白是什麼問題? – ex1t3

+1

我猜測'pow'函數在這裏不起作用,因爲'z'是負數...你讀過文檔嗎?它是什麼意思?if一個像上面那樣複雜的表達,並沒有給出預期的結果,那麼**爲什麼你不試圖首先將它分解成簡單表達式來查看問題出在哪裏,我建議你做更多的努力。 ..否則你不學習當你對你的問題投贊成票時,甚至會毀掉你的名聲。 **如果您選擇成爲程序員,那麼您必須努力工作,非常努力。** – Phil1970

回答

-1

那麼,對於1/3(或其他任何具有奇數分母的分數次方)的權力,您可以輕鬆調整代碼以測試該值是否定的,如果是,則取絕對值,即相應的根和然後將結果乘以-1。 每個程序員都應該能夠做的非常基礎的數學。

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

在其他情況下,您必須使用複數。例如:(-4)^(1/2)等於-2i(i是虛數,使得i^2等於1

這就是爲什麼你應該總是聽在學校的數學老師......