你不知道的Java — 24.NaN

如题所述

今天讨论的内容是关于Java中一个特殊的数值:NaN(“不是一个数字”)。你可能认为数字总是等于它自己,但实际上,IEEE 754浮点算术中定义了一个特殊值用于表示非数值,即NaN。

在Java中,当执行没有明确数字定义的浮点运算时,如0.0/0.0,结果将被赋予NaN值。根据规范,NaN不等于任何浮点数值,甚至包括自身。

这意味着,如果你将NaN赋值给一个变量,如double i = 0.0 / 0.0; 或使用标准库提供的Double.NaN,然后在while循环条件中比较i != i,条件将始终为真,导致无限循环。

此外,涉及NaN的任何浮点运算都将产生NaN结果。例如,double i = 0.0 / 0.0; double result = i - i; 将导致result为NaN。这是因为一旦计算产生NaN,它就“损坏”了,任何进一步的计算都将沿用该状态,无法修复。

因此,处理NaN值时需格外小心。虽然规则简单且合理,但其结果可能违背直觉。比如,double i = 0.0 / 0.0; System.out.println(i - i == 0); 将输出false,尽管数学上i - i应等于0。

综上所述,Java中的float和double类型包含NaN值,用于表示非数值结果。在涉及NaN的运算中,遵守特定规则对避免意外行为至关重要。尽管这些规则明确且合理,但它们可能导致出乎意料的结果,需要谨慎处理。
温馨提示:内容为网友见解,仅供参考
无其他回答

你不知道的Java — 24.NaN
今天讨论的内容是关于Java中一个特殊的数值:NaN(“不是一个数字”)。你可能认为数字总是等于它自己,但实际上,IEEE 754浮点算术中定义了一个特殊值用于表示非数值,即NaN。在Java中,当执行没有明确数字定义的浮点运算时,如0.0\/0.0,结果将被赋予NaN值。根据规范,NaN不等于任何浮点数值,甚至...

java中nan是什么意思
Java中nan是什么意思?在 Java 中,nan 代表的是“不是一个数字”(Not a Number)。当我们尝试将不合法的数值进行计算时,比如0\/0,结果就会是 nan。在 Java 中,nan 属于特殊的 IEEE 754 浮点数类型(Double.NaN 或 Float.NaN),可以用来表示一些无法进行计算的数值,例如无穷大除以自己得到的...

java nan是什么意思?
在计算机科学中,NaN表示“不是一个数字”(Not a Number)。当计算结果不是数字时,需要给出一个特别的句柄来表明该结果是无意义的。NaN可以是一个被零除的结果,计算方程的根小于零,或者强行解析数字时发生无效输入等。NaN在Java中也被定义为一个特殊的浮点值,可通过Float和Double类型来表示。在Ja...

在JAVA语言中"NAN"是什么意思呀??谢谢!!
NaN“Not a Number”。出现这个数值比较少见,以至于我们可以不理它。当运算无法返回正确的数值时,就会返回“NaN”值。NaN 值非常特殊,因为它“不是数字”,所以任何数跟它都不相等,甚至 NaN 本身也不等于 NaN 。

java中NaN是什么意思
NaN,是Not a Number的缩写。NaN 用于处理计算中出现的错误情况,比如 0.0 除以 0.0 或者求负数的平方根。由上面的表中可以看出,对于单精度浮点数,NaN 表示为指数为 emax + 1 = 128(指数域全为 1),且尾数域不等于零的浮点数。IEEE 标准没有要求具体的尾数域,所以 NaN 实际上不是一个...

java 这段代码为什么会算出NaN
float i = 0;float j = 0;temp = Math.div(i,j); \/\/temp=0\/0,当然就是Float.NaN,意思就是非正常浮点值 放到i = Float.parseFloat(st1);j = Float.parseFloat(st2);后,也可能出现NaN,这要看你参数是啥,如果都是0,一样出现NaN ...

在JAVA语言中 NaN 表示什么
表示算术表达式返回非数字值的非凡值。number.NaN number 参数是Number 对象.说明 在能够访问 NaN 属性前不必创建 Number 对象。NaN 不与任何值相等,包括其本身。要检测值是否为 NaN,请使用 isNaN 函数。文章来源: 动态网站制作(www.knowsky.com) 出处:http:\/\/www.knowsky.com\/361579.html ...

在java中输出的是NaN
Math.log(0) 的结果是-Infinity (负无穷大)所以 再与其它数运算,结果,就不是一个正常的数了,NaN not a number!

JAVA里的***.max()怎么用?
在Java中,利用`java.lang.Math`类的`max`方法,你可以方便地比较两个指定类型的数值,如double、float、int或long,以找出较大的那个值。这个静态工具方法在处理数值比较时非常实用,例如在`MaxDemo`类的`main`方法中,你可以看到一个实例:例如,当你需要找出double类型变量x(24.12)和y(32.11)...

nan计算机用语
NaN,其浮点数可能表示为01111111110000000000000000000000。这里的尾数域的第一位为1,其余位均为0(不计隐藏的一位),但这取决于系统的硬件架构。Java甚至允许程序员自行构造具有特定位模式的NaN值,通过Float.intBitsToFloat()方法实现。这种定制的NaN值中的特定位模式可以用来表达某些诊断信息。

相似回答
大家正在搜