我最近在 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(它依赖于 Bytecode 中的 Java 原语来表示数字类型)和 Java 的 Double 对象中,有一个 NaN 和一个正/负无穷大值(在 Java 中记录了相应的二进制值)。如果 JVM 不支持它们,如何有效地处理它们?