我们什么时候需要使用float.PositiveInfinity和float.NegativeInfinity?

Hom*_*mam 9 c# floating-point infinity

我们什么时候需要使用Infinity值,如果可用的话,请添加一个真实的样本.

Chr*_*isF 7

PostiveInfinity

当操作结果大于MaxValue时,返回此常量.

NegativeInfinity

当操作结果小于MinValue时,返回此常量.

因此,您将使用这些常量来验证您的值是否超出其类型的范围.


Vla*_*lad 7

例如,负无穷大是空列表的自然最大值.有了这个,你有:max(l1 + l2) = max(max(l1), max(l2)),where l1l2是任意列表,可能是空的.

这个原则的现实应用:

float Max(IEnumerable<float> list)
{
    // invariant: max contains maximum over the part of the list
    // considered so far
    float max = float.NegativeInfinity;
    foreach (float v in list)
        if (v > max)
            max = v;
    return max;
}
Run Code Online (Sandbox Code Playgroud)

  • 考虑到空列表对于大多数应用程序来说可能是一个非常具体的极端情况,我更喜欢上述解决方案,而不是总是必须处理“null”值。 (2认同)