你好,我是 Java 新手,我不明白为什么我的程序输出 NaN 两次!
这是代码。谁能告诉我这是怎么回事?
我给出的输入 分别是 2,3,3 (A 是 2 B 是 3 C 是 3)
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.print("A :");
double a = scan.nextDouble();
System.out.print("\nB :");
double b = scan.nextDouble();
System.out.print("\nC :");
double c = scan.nextDouble();
double temp = Math.sqrt(b*b-4*a*c);
double result_one = (-1*b+ temp)/(2*a);
double result_two=(-1*b- temp)/2*a;
System.out.println("The Result for A:" +a +" B:" +b +" C:" +c +" is");
System.out.println("Result 1 : " + result_one);//This double Should not be NaN
System.out.println("Result 2 : " + result_two);//This double Should not be NaN
}
最佳答案
这是一个经典的二次方程。您的问题是由 temp
引起的多变的。 b*b
的值小于 4*a*c
,因此这意味着您尝试提取负数的平方根。
尝试打印 temp 变量,根据您的输入,您将得到相同的 NaN
信息。基本上,该消息是由于您的问题无法使用“真实”数字解决的事实引起的。
您应该阅读 complex数字。
根据 @michalk 在评论中的建议,您可以阅读有关 Math.sqrt 的信息。功能。
由于您在回答问题时没有添加值,因此我正在编辑此答案以明确解释它不起作用的原因:
- 您正在尝试解决:
a * x^2 + b * x + c = 0
或2 * x^2 + 3 * x + 3 = 0
- 解方程的必要条件是
b^2 - 4*a*c >= 0
或3*3 - 4*2*3 > 0
=> 自-15 < 0
以来,未达到必要条件
来自here :
Returns: the positive square root of a. If the argument is NaN or less than zero, the result is NaN.
关于java - Double 是 NaN,但它不应该,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57441017/