floating-point - 为什么 IEEE 754 保留这么多 NaN 值?

标签 floating-point nan ieee-754

IEEE 754 标准似乎将 16,777,214 个 32 位浮点值定义为 NaN,即所有可能值的 0.4%。

我想知道保留这么多有用值的理由是什么,而实际上只需要 2 个值:一个用于信号发送,一个用于安静的 NaN。

抱歉,如果这个问题很琐碎,我在互联网上找不到任何解释。

最佳答案

IEEE-754 标准将 NaN 定义为指数全为 1 且有效数非零的数字。尾数中的最高位指定 NaN 是信令还是静默。有效数字的其余位形成了 NaN 的有效负载

只要运算的操作数之一是 NaN,结果就是 NaN,并且结果的有效负载等于 NaN 操作数之一的有效负载。有效负载保存对于 efficiency in scientific computing 很重要,和 at least one company已提议将 NaN 有效负载用于专有用途。

用更基本的术语来说,NaN 不携带任何有用的数字信息,并且无论如何都必须保留整个 32 位,因此如果标准中没有定义有效负载,则有效数字中未使用的位将被浪费.

关于floating-point - 为什么 IEEE 754 保留这么多 NaN 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19800415/

相关文章:

python - 将 int32 转换为其他类型时的精度

Java 数学 - 测试 NaN

python - 在 numpy 数组求和中将 nan 视为零,除了所有数组中的 nan

javascript - 在 JavaScript 中编码和解码 IEEE 754 float

c - 如何正确实现 float 乘法(软件FP)

node.js - 在 Node 中将 ieee754 转换为十进制

Swift float 乘法错误

javascript - Javascript 中数字的精确 float 如何工作?

google-apps-script - Google 脚本 parseInt 和 NaN - 它是如何工作的?

c - 将 1000 位数字与 10 位数字交换 (C)