JVM缺少对NaN vs scala Double.NaN的支持

时间:2013-03-14 15:00:48

标签: java scala floating-point jvm jvm-languages

我最近在Java虚拟机规范中读到JVM不支持NaN值,也不支持信号溢出。

我特别指的是jvms 7的第2.8.1节,JVM支持的浮点运算与IEEE 754之间的主要区别,其中指出:

"The floating-point operations of the Java Virtual Machine do not throw
exceptions, trap, or otherwise signal the IEEE 754 exceptional conditions of
invalid operation, division by zero, overflow, underflow, or inexact. The Java
Virtual Machine has no signaling NaN value."

我想念 - 理解这个吗?在Scala(它依赖于字节码中的Java原语来表示数字类型)和Java的Double对象中,存在NaN和正/负无穷大值(在Java中已经记录了相应的二进制值)。如果JVM不支持它们,如何有效地处理它们?

1 个答案:

答案 0 :(得分:15)

你引用的文字说没有信号NaN,而不是没有NaN。

导入是Java中的浮点运算产生预期值(包括NaN和无穷大)但不抛出异常。