为什么下面这段程序最后输出的是1.6180339887498949而不是1.618033988749895呢,把1.618033988749895写成1.6180339887498950最后还是输出1.6180339887498949。1.6……50 的二进制正好可以用54位二进制表示,而1.6……5的二进制只有51位,为什么会有偏差呢?
static void Main(string[] args)
        {
            const double number = 1.618033988749895;
            double result;
            string text;            text = string.Format("{0:R}",number);
            result = double.Parse(text);
            Console.WriteLine("{0}",  text);
        }