這個二次方程式不會返回我確定它返回的字符串中的負數。 這裏的方程:這個二次方程爲什麼不會返回負數?
public class QuadraticEquation {
String final0;
public String calculate(int a, int b, int c) {
double done1 = ((-1 * b) + Math.sqrt((b * b) - (4 * a * c)))/(2 * a);
double done2 = ((-1 * b) - Math.sqrt((b * b) - (4 * a * c)))/(2 * a);
final0 = "x = " + (done1) + " or x = " + (done2);
return final0;
}
}
想象用,b和c的值的方程像-3,13 -4和。這個返回值將是-0.3(重複)和-4。但是這個方程只返回正數,所以在這種情況下它會返回0.3(重複),4.爲什麼會這樣,我能做些什麼來解決它?
注意:我確實認爲這是Java錯誤而不是數學錯誤。如果這是一個數學錯誤,請在評論中告訴我,我會立即將其放入適當的論壇。謝謝。
@assylias sqrt返回一倍。 – 2013-05-12 20:14:41
@ZiyaoWei但你除以'(2 * a)',這是一個int。這也不會處理虛數。 a,b和c應該是雙打。 – ApproachingDarknessFish 2013-05-12 20:17:23
僅僅0.3是不是正確答案? (-1 * 13 + sqrt(13 * 13-4 * -3 * -4))/(2 * -3)=(-13 + 11)/(-6)= 0.333 – 2013-05-12 20:17:49