为什么在比较一个浮点数和一个双精度数时输出结果?

这个问题在这里已经有了答案:

  • .NET中decimal,float和double的区别? 17个答案

  • 当你做第一次赋值时,常量被截断以适合float 。 当你做第二次赋值时, float -precision文字1.1111...11F被转换为double 。 由于c包含1.1111...11F文字的值,所以d初始化等同于

    double d = ((double)c);
    

    这两个赋值都会改变文字常量的精度,但它们会以不同的方式进行更改。 这就是为什么你在前两个WriteLine看到不同的打印输出。

    当你比较cd ,具有较低精度的值(即c )被转换为具有较高精度的类型,即double 。 这与您将1.1111...11F文字分配给变量d时所执行的转换具有相同的转换,因此这些值在==操作中相同。 换句话说,当你这样做

    Console.WriteLine(c == d);
    

    编译器会这样做:

    Console.WriteLine(((double)c) == d);
    

    这就是为什么比较返回true

    链接地址: http://www.djcxy.com/p/21347.html

    上一篇: Why is this output when compare a float and a double

    下一篇: > Decimal not exactly