今天去百度搜索的时候,碰到一位发scjp考证问题的网友,进去看了一下。原来是考断言机制assert。但是令人费解的是,这位网友问的是Float.NaN是what,才想起,好像我也没见过呢。转了一圈csdn,高手还是很多的,大概知道了一点点关于NaN的知识,这里记录一下,毕竟这好像比较少用到,以后可能就google不了了,得提前准备一下。
(注意,double中的NaN类似)
在帮助文档中,NaN是这样解释的(double的,和float差不多):
<!-- Generated by javadoc (build 1.6.0-beta2) on Mon Mar 19 18:22:44 CST 2007 -->
<noscript></noscript>
public static final double NaN
保存 double
类型的 NaN 值的常量。它等于
Double.longBitsToDouble(0x7ff8000000000000L)
返回的值。
我是这样解释的(理解不深,有错请不吝赐教):
NaN--Not-a-Number,其实是指一个不合理的实数,在合法却不合理的情况下避免你的程序出现Exception。
NaN什么也不是,如果理解成一个超越了float范围的常量(或者double),那也是不对的,为什么?试试判断(NaN==NaN)吧,你会发现这返回了一个false。这在java底层是怎么做到的呢?最直接的方式是看java源代码咯。
/**
* A constant holding a Not-a-Number (NaN) value of type
* <code>float</code>. It is equivalent to the value returned by
* <code>Float.intBitsToFloat(0x7fc00000)</code>.
*/
public static final float NaN = 0.0f / 0.0f;
上面这一段,就是floa的NaN定义了。这并不是一个超出了范围的常量,而是java的Float中人为得制造出来的一个合法但是不合理的实数了(看来那位仁兄说得基本都对了)。所以,NaN==NaN永远等于false啦。
那用什么来判断是否合理的Number呢?很奇怪的是,java提供了一个isNaN()的方法,指是否是一个不合理的实数。是否很拗口?我在javascript中第一次接触这个东西,也觉得很奇怪。
为什么有这样一个判断的方法不把NaN设置成private的,却又对外开放?难道担心我们不能主动制造一个不合理的实数出来?本人菜鸟,如果有高手能解答,还请不吝赐教,理解未深,有错误请指出,谢谢。
分享到:
相关推荐
java 男生女生各多少人 java 男生女生各多少人
java 是男人就下100层 游戏 java 是男人就下100层 游戏
Java版的是男人就坚持30秒源码
是男人就撑60秒java源码
写给NET/JAVA男程序员的信 写给NET/JAVA男程序员的信 写给NET/JAVA男程序员的信
java swing游戏《是男人就下一百层源码》 同原版完全一样
是男人就下100层Kjava版
利用java多线程技术制作小游戏 是男人就坚持30秒
JAVA模拟http上传文件_代码男_新浪博客
java游戏设计java游戏设计java游戏设计 java游戏设计java游戏设计
史上最全的android和java面试文档集。包括有: java程序员面试宝典.txt Java面试宝典2011版-1C,Java基础部分.doc 三大框架面试题.zip 技术面试题.zip Android笔试题库 C语言终极面试宝典.doc Java笔试题目汇总.pdf ...
java类,该类可以对一组数值进行由小到大排序。主类的main方法中,从键盘上输入一组数值,使用该类对其排序。
简介: 该软件是我毕业时候做的一个毕业设计。并且获得了优秀毕业设计的奖项...注意: 本软件采取JAVA JDBC纯驱动连接方式。 使用前必须有驱动包!!!! 注意:该资源来自www.qoovod.com,如需转载,请保留此信息。
# Java设计大学男女生宿舍信息管理系统小游戏代码 以下是一个基于Java的男女生宿舍信息管理系统小游戏的代码示例: ``` import java.util.Scanner; public class DormitoryManagementSystem { public static ...
WTK2.2 cldc1.1,是本人初学j2me开发的。希望能对初学者提供帮助。
用Java开发的一个简单的是男人就下一百层的小游戏
java设计文档模板
java虚拟机第二版
使用java多线程实现一个动画 ,一个男孩和一个女孩分别从宿舍走到饭堂,在饭堂相遇,然后一起去上课。
java8 集合源码分析 Java 百宝箱 1.学习规划 技术日新月异,对于初入职场的同学来说,经常会困惑该往那个方向发展,这一点松哥是深有体会的。 网上的资料多如牛毛,但是很多时候我们缺的不是一个资料,而是一个学习...