我知道IEEE754将NaN定义为具有以下按位表示:
0
或1
1
位0
位,因为该位模式保留用于表示无穷大当计算的输入是NaN时,有效载荷被传播(就像整个NaN一样)到浮点计算的结果,尽管我不知道这种传播的细节,也不知道标准是否规定了如何做到这一点。谁设置原始有效载荷?如果我添加两个具有不同有效载荷的NaN会发生什么?
但最重要的是:我以前从未见过NaN有效载荷。这个有效载荷字段有什么用途?
当IEEE754和NaN被开发出来时,这被认为是一个好主意。我实际上已经看到它被用来存储创建NaN的原因。
今天,我不会在可移植代码中使用它,原因有几个。例如赋值,你有多确定这个有效载荷会存活下来?如果你赋值x=y,你有多确定x和y具有相同的NaN有效载荷?你有多确定它会在算术中存活下来?如果a或b是NaN,那么op b应该是一个NaN,或者两个NaN中的一个,如果它们都是NaN。确定是这样吗?我不愿意打赌。
https://softwareengineering.stackexchange.com/questions/185406/what-is-the-purpose-of-nan-boxing
查看该链接,了解js引擎如何使用nan拳击
统计环境R使用NaN
有效载荷将一个特定的NaN
区分为表示统计“缺失值”,打印为NA
。这允许“缺失”通过数字计算传播——尽管当将缺失值与另一个NaN
组合时,无法预测传播的是哪一个。