在我所知的所有语言(python,java,php,javascript等)中,NaN的类型是float(double)。 有什么理由吗?我没有在IEEE 754 [注意:IEEE 754-2008第6章涉及NaN]中找到这样的内容。即使NaN在内部存储为浮点数,也不应该是一个分离的类型(类似于null / nil / none)? 是否有任何语言为NaN使用单独的类型?
答案 0 :(得分:3)
考虑浮点除法,我将其称为/
。很明显,我们希望它有签名
function / : float x float -> float
但我们也想要(根据标准)
0 / 0 = NaN
因此NaN
必须是float
类型的值。
答案 1 :(得分:1)
NaN
有一个specific meaning。如果一种语言想要用自己的值(例如None
,NA
,#N/A
等)实现“无意义”的结果,那么欢迎使用,但FP操作需要他们的拥有独立于任何使用语言的特定指标。