Page 55 浮点类型造成非预期的不相等

using System.Diagnostics;

namespace CH03
{
    class Program
    {
        static void Main(string[] args)
        {
            decimal decimalNumber = 4.2m;
            double doubleNumber1 = 0.1f * 42f;
            double doubleNumber2 = 0.1d * 42d;
            float floatNumber = 0.1f * 42f;

            Trace.Assert(decimalNumber != (decimal)doubleNumber1);
            System.Console.WriteLine("{0} != {1}", decimalNumber, (decimal)doubleNumber1);

            Trace.Assert((double)decimalNumber != doubleNumber1);
            System.Console.WriteLine("{0} != {1}", (double)decimalNumber, doubleNumber1);

            Trace.Assert((float)decimalNumber != floatNumber);
            System.Console.WriteLine("(float){0}m != {1}f", (float)decimalNumber, floatNumber);

            Trace.Assert(doubleNumber1 != (double)floatNumber);
            System.Console.WriteLine("{0} != {1}", doubleNumber1, (double)floatNumber);

            Trace.Assert(doubleNumber1 != doubleNumber2);
            System.Console.WriteLine("{0} != {1}", doubleNumber1, doubleNumber2);

            Trace.Assert(floatNumber != doubleNumber2);
            System.Console.WriteLine("{0}f != {1}d", floatNumber, doubleNumber2);

            Trace.Assert((double)4.2f != 4.2d);
            System.Console.WriteLine("{0}f != {1}d", (double)4.2f, 4.2d);

            Trace.Assert(4.2f != 4.2d);
            System.Console.WriteLine("{0}f != {1}d", 4.2f, 4.2d);

            System.Console.ReadKey(true);
        }
    }
}
posted @ 2011-11-29 16:48  jacky_j2ee  阅读(161)  评论(0编辑  收藏  举报