【问题标题】:Why does Math.Sign() throws exception when passed a NaN? [closed]为什么传递 NaN 时 Math.Sign() 会抛出异常? [关闭]
【发布时间】:2017-12-03 06:01:09
【问题描述】:

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

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

【问题讨论】:

  • 因为是documented behaviorArithmeticException | 值等于 NaN.
  • @Maxim 我的问题是为什么会做出这个决定?许多其他数学函数在传递一个 NaN 时返回一个 NaN。
  • 当正常行为是返回符号时,为什么 Math.Sign() 应该返回 NaN

标签: c# math nan sign


【解决方案1】:

int Math.Sign(Double value) 返回一个整数 ... (-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

【讨论】:

    猜你喜欢
    • 2013-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-28
    • 2013-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多