在C#中表达数学上的无限大

30

在C#中,是否可以表示(数学上的)正无穷大或负无穷大?如果可以,怎样表示?

5个回答

44

使用PositiveInfinityNegativeInfinity常量:

double positive = double.PositiveInfinity;
double negative = double.NegativeInfinity;

34

正无穷大

负无穷大

float zero = 0;

float positive = 1 / zero;
Console.WriteLine(positive);    // Outputs "Infinity"

float negative = -1 / zero;
Console.WriteLine(negative);    // Outputs "-Infinity"

为什么你不直接写成 float positive = 1/0; 呢?为什么要多此一举呢? - hhafez
10
因为编译器会检测到除以零并停止编译。 - Jaimal Chohan
17
йӮЈжҳҜеӣ дёәзј–иҜ‘еҷЁе°Ҷ1/0и§Ҷдёәж•ҙж•°йҷӨжі•гҖӮдҪҝз”Ё1/0fжҲ–1/0.0дјҡиө·дҪңз”ЁгҖӮ - LukeH

6
是的,请检查类型为floatdouble的常量值,例如:
float.PositiveInfinity
float.NegativeInfinity
这些值符合IEEE-754标准,因此您可能希望了解这是如何工作的,以便在进行计算时知道何时以及如何获取这些值。更多信息请参见此处

5
public const double NegativeInfinity = -1.0 / 0.0;
public const double PositiveInfinity = 1.0 / 0.0;

1

看这里(只返回正无穷∞)

备注:

这个常量的值是将一个正数除以零的结果。当操作的结果大于MaxValue时,会返回此常量。使用IsPositiveInfinity来确定一个值是否为正无穷。

因此,这将等于无穷大。

Console.WriteLine("PositiveInfinity plus 10.0 equals {0}.", (Double.PositiveInfinity + 10.0).ToString());

现在讲一下负数:

当操作的结果小于MinValue时,将返回此常量。

因此,这将等于无穷大。

Console.WriteLine("10.0 minus NegativeInfinity equals {0}.", (10.0 - Double.NegativeInfinity).ToString());

参考文献:https://msdn.microsoft.com/en-us/library/system.double.negativeinfinity(v=vs.110).aspx


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接