c# - 如何在浮点计算中得到-0结果并与C#中的+0区分开来?

标签 c# floating-point zero

MSDN 文档提到 double 类型包括负零。但是,-1.0/double.PositiveInfinity-double.Epsilon/2 似乎都返回正常的 0(并比较等于它)。我怎样才能得到-0?

最佳答案

这是一个在不检查位的情况下区分两者的实际示例。 MSDN 链接 herehere帮助我构建了这个示例。

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/

相关文章:

c# - 如何制作asp :buttons same width with bootstrap and css

c# - 使用扩展方法的 Entity Framework 分页很慢?

c# - 只允许在构造函数中设置值的设置访问器的名称是什么?

c - 循环无法识别变量?

c++ - 如何将整数值 "0"存储在 .bin 文件中? (C++)

javascript - 如何在数字数组中插入零序列?

c# - 无法弄清楚为什么 collection 会为 bool 属性返回 false?

c++ - 我应该始终为数字类型使用适当的文字吗?

math - float 学有问题吗?

batch-file - 删除批处理文件中的前导零