「javaisnan方法」java 方法

博主:adminadmin 2023-03-17 12:20:07 718

本篇文章给大家谈谈javaisnan方法,以及java 方法对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java中double值是非数字值是什么意思?

double 类型有 1 个非数字的特殊值,0.0 除以0 或对一个负数开方会得到 Double.NaN,表示非数字。可用如下代码测试:

double a = 0.0/0;

System.out.println(a); //输出 NaN

System.out.println(Double.isNaN(a)); //true

Double.isNaN(a) 返回 true,所以 a 是一个非数字值。

在java中Float源码中static public boolean isNaN(float v) { return (v != v); }方法,v != v是什么意思?

这么久的老问题了, 还没采纳, 对于这种提问但不采纳的问题其实根本不想回复,,, 不过作为自己梳理和对于其他同样有这个疑问可能看到的这个提问的人的参考, 还是可以简单说下自己的理解:

java的Float里面定义了一个NaN字段,其值就是0.0f/0.0f ;

这个值本身比较特殊,它表示的是一个非数值的状态或者说类型, 这个值不等于任何值,包括它自己(大致可以理解为NaN与NaN之间是同类,虽然我们是同类但是我不是你,更深层的原因我觉得可能是每个NaN都会分配一个单独的地址来放, 所以导致NaN==NaN的时候比较内存地址一定会返回false,也就是NaN!=NaN的时候一定是true).

除此之外, 还有一些别的特殊之处可以参考: Float里面有一个native方法叫: intBitsToFloat(Int),这个方法注解中提到它处理值的时候有两个特殊考虑:

一个就是,实现时考虑了这个值NaN值, 注解原文意思是这个值通过iniBitsToFloat处理出来后会跟自己相等(所以Float对象值是NaN的时候, 使用equals方法比较另一个NaN的变量值时是相等的结果), 并且这里还定义了NaN大于所有其他值(甚至包括比浮点数的正无穷大要大);

第二个,也挺有意思, 就是规定了-0.0f 是小于 0.0f的;

以上两个是native方法实现本身逻辑就已经是这样的事实了(可以称为设计如此吧);

写了半天, 估计看的人还不如字数多,要不后面还是发CSDN吧....

关于 java 中isNaN()

NaN:public static final double NaN

这是个常数,用于声明一个double他不是数哈哈,有点别扭哈,就是用于建立条件的

所以double这样就可能不是数

所以这个函数就有意义了

其实double是NaN的时候你输出会得到NaN

哈哈

double x = Double.NaN

....//一些列操作,有可能给x赋予新值,也可能没有

//为了看是不是x发生变化

if(Double.isNaN(x)){

//没变还是Nan

}else{

//变了的操作

}

javaisnan方法的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java 方法、javaisnan方法的信息别忘了在本站进行查找喔。