java 中的NaN

来源:互联网 发布:项目管控软件 编辑:程序博客网 时间:2024/05/19 06:19

所有的浮点数值计算都遵循IEEE754规范,下面是用于表示溢出和出错情况的三个特殊的浮点数值。

1,正无穷大; 2,负无穷大; 4,NaN(不是一个数字) 例如,一个正整数除以0的结果为正无穷大。计算0/0或者负数的平方根为NaN

常量Double.POSITIVE_INFINITY , Double.NEGATIVE_INFINITY 和 Double.NaN(与相应的Float类型的常量一样)分别表示这三个特殊的值, 但在实际应用中很少使用。特别要说明的是,不能这样检测一个特定的值是否等于Double.NaN:

if(x == Double.NaN) //is never true

所有“非数值”的值都认为是不同的。然而,可以使用Double.isNaN方法:

if(Double.isNaN(x)) //check whether x is "not a number"

浮点数值不适用用于禁止出现舍入误差的金融计算中。例如,命令System.out.println(2.0 - 1.1);将打印出0.899999999999,而不是0.9。

其主要原因是数值采用二进制系统表示,而在二进制系统中无法精确表示1/10.这就好像十进制无法精确低表示1/3.如果需要在计算中避免误差,就

要使用BigDecimal类。

isNaN():

描述: 返回一个 Boolean 值,指明提供的值是否是保留值 NaN (不是数字)。

语法: isNaN(numvalue) numvalue 参数是要检查是否为 NaN 的值。

说明: 如果值是 NaN, 那么 isNaN 函数返回 true ,否则返回 false 。

使用这个函数的典型情况是检查 parseInt 和 parseFloat 方法的返回值。 还有一种办法,变量可以与它自身进行比较。 如果比较的结果不等,那么它就是 NaN 。 这是因为 NaN 是唯一与自身不等的值

0 0
原创粉丝点击