为什么NaN的类型是浮动的?

时间:2012-03-01 03:17:57

标签: math language-agnostic types

在我所知的所有语言(python,java,php,javascript等)中,NaN的类型是float(double)。 有什么理由吗?我没有在IEEE 754 [注意:IEEE 754-2008第6章涉及NaN]中找到这样的内容。即使NaN在内部存储为浮点数,也不应该是一个分离的类型(类似于null / nil / none)? 是否有任何语言为NaN使用单独的类型?

2 个答案:

答案 0 :(得分:3)

考虑浮点除法,我将其称为/。很明显,我们希望它有签名

function / : float x float -> float

但我们也想要(根据标准)

0 / 0 = NaN

因此NaN必须是float类型的值。

答案 1 :(得分:1)

关于浮点数,

NaN有一个specific meaning。如果一种语言想要用自己的值(例如NoneNA#N/A等)实现“无意义”的结果,那么欢迎使用,但FP操作需要他们的拥有独立于任何使用语言的特定指标。