java - 如何为 if 语句“声明” NaN?
问题描述
我有一个二次公式求解器的代码,但我无法让 NaN 与我的if
陈述一起表现。
package homework;
import java.util.Scanner;
import java.lang.Math;
// My Name 9/18/18
// The purpose of this class is to allow a user to input an a,b, and c value and perform the quadratic equation on them
public class QuadFormHW
{
public static void main(String[] args)
{
double a,b,c,answer1,answer2;
Scanner inputReader = new Scanner(System.in);
System.out.print("Please enter an \"a\" \"b\" and \"c\" value.");
a = inputReader.nextDouble();
b = inputReader.nextDouble();
c = inputReader.nextDouble();
answer1 = (-b + Math.sqrt(Math.pow(b, 2) - (4 * a * c))) / (2 * a);
answer2 = (-b - Math.sqrt(Math.pow(b, 2) - (4 * a * c))) / (2 * a);
if (answer1 == NaN)
{
System.out.print("Error cannot calculate");
}
else if (answer2 == NaN)
{
System.out.print("Error cannot calculate");
}
else
{
System.out.printf("Your answers are: %.3f , %.3f",answer1,answer2);
}
inputReader.close();
}
}
谁能帮我理解为什么NaN
不是一个可接受的值?
解决方案
您问的问题与此较早的 QA 帖子相同:您如何测试 double 是否等于 NaN?(我已将此标记为该副本的副本)。
简而言之:根据设计,NaN
不能与任何其他值进行有意义的比较,(因此foo == NaN
不适用于您的目的)。这是因为 NaN 传播。
相反,要测试NaN
,使用Double.isNaN( value )
or Float.isNaN( value )
。
推荐阅读
- csv - 如何识别 csv 文件中的最大值?
- tensorflow2.0 - 带有 Fine-tune 的模型多次检测同一对象
- python - 使用 for 循环简化 pandas 数据框的创建
- php - 如何使用两种不同的数据类型时间和文本创建动态输入值并插入一列
- flutter - 如何更改文本字段的设置值
- javascript - Materialize Init 正在禁用其他选择下拉菜单
- arrays - 在c中删除数组的重复名称
- flutter - 我的颤振应用程序没有运行我想要的主页
- ios - Sprite Kit 动画与各种声音文件定时 - 目标:动画在每个声音文件结束时自动结束,以避免手动定时每个声音文件
- windows-10 - Xbox 主机伴侣键盘快捷键