c# - 为什么无限在Windows 10控制台中打印为 "8"?

标签 c# .net windows

我正在测试除法返回的内容,包括零,即 0/11/00/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);

输出:

Inifinity output

最佳答案

确保浮点值是+Infinity 如果浮点除以零的分子是正的,-Infinity 如果浮点除的分子如果浮点除法的分子和分母都为零,则除以零为负,并且 NaN。那是在IEEE754 floating point specification ,这是 C# 使用的。

在您的情况下,控制台 正在将无穷大符号(有时在打印上表示为水平 8 — ∞)转换为垂直 8。

关于c# - 为什么无限在Windows 10控制台中打印为 "8"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40907417/

相关文章:

c# - 将 SqlDataType 转换为 C# 枚举

c# - 在 Robot Framework 中实例化 C# 对象

.NET MVC - 在同一 Controller 中使用 ActionName() 的多个 GET 方法

windows - 在 Windows 上使用 Git 更新文件

windows - 如何在 Windows XP 中为 USB 串行加密狗获得稳定的 COM 端口?

windows - SetTimer 生成一个随机的 IDEvent

c# - 获取音乐节奏或 BPM?

c# - Entity Framework SqlQuery 选择 LONG RAW 到字节数组

c# - Unity构建和运行游戏错误: Error building Player: Extracting referenced dlls failed

.net - log4net.ThreadContext 和 log4net.LogicalThreadContext 有什么区别?