我最近在Java Virtual Machine Specification中看到,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不支持它们,如何有效地处理它们呢?
发布于 2013-03-14 23:08:05
您引用的文本说没有信号NaN,并不是说没有NaN。
重要的是,Java中的浮点操作会生成预期的值(包括NaNs和无穷大),但不会抛出异常。
https://stackoverflow.com/questions/15412766
复制相似问题