2014-10-01 32 views
1

我寫了一個計算二次方程的小應用程序。它可以工作,我可以計算(幾乎)所有沒有非真實判別式的方程,但是當我將A的值更改爲anythinh而非1時,程序給了我奇怪的答案。這是計算代碼:目標C中的二次方程計算

- (double)calculateRoot1{ 
    return (-B + sqrt((B*B)-4*A*C))/2*A; 
} 

- (double)calculateRoot2{ 
    return (-B - sqrt((B*B)-4*A*C))/2*A; 
} 

然而這似乎適用於A = 1的任何方程式。我希望你們能幫助我!

謝謝:)

+0

你的分母應該是'/(2 * A)' – thelaws 2014-10-01 16:33:56

+0

或'/ 2/A'。另外,使用'2.0'而不是'2'。 – rmaddy 2014-10-01 16:48:18

+0

@rmaddy我從來沒有完全清楚現代(llvm)圍繞字面轉換的規則。因爲lhs'(-B + sqrt((B * B)-4 * A * C))'可能是雙倍的,所以不會變成雙重的? – 2014-10-01 17:37:54

回答

3

你的分母應該是/(2*A)。現在你再除以2,然後通過A

乘以這是因爲*/操作符是從左向右的C.

+0

非常感謝你,我欠你一杯啤酒 – ANON 2014-10-01 19:01:35