MSDN 文档提到 double
类型包括负零。但是,-1.0/double.PositiveInfinity
和 -double.Epsilon/2
似乎都返回正常的 0(并比较等于它)。我怎样才能得到-0?
最佳答案
这是一个在不检查位的情况下区分两者的实际示例。 MSDN 链接 here和 here帮助我构建了这个示例。
static void Main(string[] args)
{
float a = 5 / float.NegativeInfinity;
float b = 5 / float.PositiveInfinity;
float c = 1 / a;
float d = 1 / b;
Console.WriteLine(a);
Console.WriteLine(b);
Console.WriteLine(c);
Console.WriteLine(d);
}
输出:
0
0
-Infinity
Infinity
请注意,-0 和 0 在比较、输出等方面看起来是一样的。但是如果您将 1 除以它们,您将得到 -Infinity 或 Infinity,具体取决于您拥有的是哪个零。
关于c# - 如何在浮点计算中得到-0结果并与C#中的+0区分开来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1043816/