[英]Properties of Double.NaN and why does Integer wrapper not have an NaN data memeber?
i=Double.NaN
while(i==i)
{
//some code
}
什么是输出? 为什么我们没有Integer.NaN
?
IEEE浮点按规范具有“非数字”表示。 整数类型没有这种状态。 整数的每种可能的二进制表示形式都是实数。
Double.NaN == x
始终为false
,无论x
是什么。
我无法告诉您原因,但是您可以通过以下方法解决:
(int)Double.NaN;
所以我的猜测是没有充分的理由。
对于float
和double
NaN甚至不等于任何东西。
对于int
和long
类型,我已经使用MIN_VALUE作为类似NaN的值,但是如果您希望它以这种方式工作,则必须自己编写代码。
顺便说一句:有一个谜题,下面是一个无限循环。
while(x != x + 0);
当这是一个无限循环时, x
有三种类型。
另一个是何时是无限循环。
while(x == -x);
有16种类型/值组合,远远超出您的预期。 ;)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.