为什么在Windows 10控制台中无穷大打印为“8”

0 投票
最新提问 1月 14, 2017 用户: grace (370 分)

我测试了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?

输出:

无限输出

2 个回答

0 投票
最新回答 1月 14, 2017 用户: 青山 (640 分)
采纳于 1月 14, 2017 用户:grace
 
已采纳

在某些设置(即区域和语言,输出编码等的组合)下.NET将输出Unicode无穷大符∞(∞)。Windows 10控制台(见下面的屏幕截图)将此Unicode字符显示为8。

例如,在Windows 10上,使用以下设置(注意代码页)将∞粘贴到控制台中显示为8。

设置为重现

在所有TrueType字体中都能正确的显示∞,只有当选择了非TrueType字体时才会看到8。

字体设置

0 投票
最新回答 1月 14, 2017 用户: 西阿斯 (200 分)

我测试了以下代码,没有发现“8”,可能和你的语言、区域有关系

Console.WriteLine(Double.PositiveInfinity.ToString(new CultureInfo("en-Us")));
Console.WriteLine(Double.PositiveInfinity.ToString(new CultureInfo("zh")));
Console.WriteLine(Double.PositiveInfinity.ToString(new CultureInfo("fr")));
Console.WriteLine(Double.PositiveInfinity.ToString(new CultureInfo("RU-RU")));

结果为:

Infinity
正无穷大
+Infini
бесконечность
欢迎来到编程助手,编程方面有什么不懂的问题可以尽管在这里提问,你将会收到热心爱好者的回答。
...