java中Double类型判断值是否为NaN的四种方法
程序员文章站
2024-03-25 19:34:10
...
java中Double类型判断值是否为NaN的四种方法
在java连接MongoDB数据库中用Double接收值时,发现部分数据到前端展示是NaN,需要对这部分数据进行处理,但是一下子想不到Double类型的值是NaN应该怎么判断。
NaN定义
NaN在Double的类中定义NaN = 0.0d / 0.0
public static final double NaN = 0.0d / 0.0;
并且NaN用==自己和自己比较不相等
double a = Double.NaN;
double b = 0.0f/0.0;
System.out.println(a == b); //false
System.out.println(a == a); //false
System.out.println(b == b); //false
但是如果是包装类型Double就可以用equals比较就是相等的
Double a = Double.NaN;
Double b = 0.0f/0.0;
System.out.println(a.equals(b)); //true
System.out.println(a.equals(a)); //true
System.out.println(b.equals(b)); //true
判断是否为NaN的四种方法
Double a = Double.NaN;
//第一种 前两种要求类型是Double即包装类
System.out.println(a.equals(Double.NaN));
//第二种
System.out.println(a.equals(0.0d / 0.0));
//第三种 使用Double的静态方法,方法实现就是第四种 类型无要求
System.out.println(Double.isNaN(a));
//第四种 利用NaN自己和自己不相等的特性,
//要求类型必须是double,不能是包装类,否则结果是false
//因为包装类是引用类型,比较的!=是地址的比较而不是值的比较。
double b = Double.NaN;
System.out.println(b != b);
上一篇: ORB SLAM2安装与运行
推荐阅读