java - Double 是 NaN,但它不应该

标签 java

你好,我是 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/

相关文章:

java - 没有身份验证标签的 AES GCM 解密

Java服务器套接字: Find an open port NOT blocked by a firewall

java - 将参数从 PrimeFaces 数据表传递到托管 bean

java - 将 2d int 数组写入 JAVA 文件

java - 在 Gradle 中,如何生成一个 POM 文件,其中动态依赖项解析为实际使用的版本?

java - ExecutorService 中的线程组

java - 基于 Maven 配置文件的 context.xml 中的 JNDI 配置

java - SWIG 不在包装文件中声明全局变量

java - 线程卡住了,因为在运行中有一个永无止境的功能

java - 如何从 Firebase 存储获取 URL getDownloadURL