【发布时间】:2014-05-18 19:40:51
【问题描述】:
我尝试并成功构建了一个二次方程求解器。
public class Solver {
public static void main (String[] args) {
int a = Integer.parseInt(args[0]);
int b = Integer.parseInt(args[1]);
int c = Integer.parseInt(args[2]);
double positive = (-b + Math.sqrt(b*b-4*a*c))/2*a;
double negative = (-b - Math.sqrt(b*b-4*a*c))/2*a;
System.out.println("First answer is " + positive);
System.out.println("Second answer is " + negative);
}
}
有时我会在输出中得到 NaN。 我做错了什么?
【问题讨论】:
-
对于什么输入值?
-
那么您提供了什么意见?我怀疑你给出的值是没有没有解决方案。 (即 b^2 - 4ac 是负数。)
-
你需要处理
a=0和b*b-4*a*c是否定的情况。 -
我会将 a、b 和 c 声明为
double,有时您会遇到整数/双精度运算冲突(尤其是除法时),但似乎并非如此。 -
你需要把分母放在括号里:
x/2*a -> x/(2*a)