我正在测试除法返回的内容,包括零,即 0/1
、1/0
和 0/0
。为此,我使用了类似于以下内容的内容:
Console.WriteLine(1d / 0d);
然而,这段代码打印出 8
而不是 Infinity
或其他一些字符串常量,例如 PositiveInfinity
。
为了完整性,以下所有打印 8
:
Console.WriteLine(1d / 0d);
double value = 1d / 0d;
Console.WriteLine(value);
Console.WriteLine(Double.PositiveInfinity);
Console.WriteLine(Double.NegativeInfinity);
打印 -8
。
为什么这个无穷大打印出 8?
对于那些似乎认为这是无穷大符号而不是 8 的人来说,下面的程序是:
Console.WriteLine(1d / 0d);
double value = 1d / 0d;
Console.WriteLine(value);
Console.WriteLine(Double.PositiveInfinity);
Console.WriteLine(8);
输出:
最佳答案
确保浮点值是+Infinity
如果浮点除以零的分子是正的,-Infinity
如果浮点除的分子如果浮点除法的分子和分母都为零,则除以零为负,并且 NaN
。那是在IEEE754 floating point specification ,这是 C# 使用的。
在您的情况下,控制台 正在将无穷大符号(有时在打印上表示为水平 8 — ∞)转换为垂直 8。
关于c# - 为什么无限在Windows 10控制台中打印为 "8"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40907417/