为什么 Math.Sign() 在传递 NaN 时抛出异常?

Why does Math.Sign() throws exception when passed a NaN?

许多数学函数 return 当 NaN 参数传递给它们时为 NaN。我想知道为什么 Math.Sign() 在传递 NaN 时抛出异常?

如何决定哪个方法 return NaN 以及哪个方法抛出异常。理解这一点将有助于我在自己的方法中遵循正确的设计。

int Math.Sign(Double value) returns 一个整数... (-1/0/1)。 Double.Nan 似乎不是整数。

可能这就是它抛出异常的主要原因。

也可以讨论为什么 Int.NaN 不存在,我们已经在 Why is Nan (not a number) only available for doubles?

进行了讨论

Math.Sign(Double) 的行为记录在 https://msdn.microsoft.com/en-us/library/ywb0xks3(v=vs.110).aspx