java - JVM 缺乏对 NaN 与 scala Double.NaN 的支持

标签 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 不支持它们,如何有效地处理它们?

最佳答案

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

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

关于java - JVM 缺乏对 NaN 与 scala Double.NaN 的支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15412766/

相关文章:

c - 为什么通过将无限级数的前 N ​​项相加来计算 sin(x) 总是返回 0.00000?

java - 如何使用 axis2 从 SOAP web 服务获取作为字符串的 xml 响应

Java从数组中删除重复项?

RegEx解析scala中两个字符串之间的行

scala - 什么是 Scala 上下文和 View 边界?

c++ - Haskell 将 (0/0) 设置为 qnan

math - float 学有问题吗?

java - 子进程:不输出

java - 如何检查一个值是 A 或 B,另一个值是 A 或 B?

java - 如何在play scala模板中定义变量