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/