这个二次方程式不会返回我确定它返回的字符串中的负数。 这里的方程:这个二次方程为什么不会返回负数?
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