gpt4 book ai didi

java - Double 是 NaN,但它不应该

转载 作者:行者123 更新时间:2023-12-01 17:44:16 25 4
gpt4 key购买 nike

你好,我是 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 的信息。功能。

由于您在回答问题时没有添加值,因此我正在编辑此答案以明确解释它不起作用的原因:

  1. 您正在尝试解决:a * x^2 + b * x + c = 02 * x^2 + 3 * x + 3 = 0
  2. 解方程的必要条件是b^2 - 4*a*c >= 03*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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com