最近在看《C#本質論》,上面講輸出1.618033988749895就會1.61803398874989,最后一位會丟失。然后又Ronud-Trip格式化,講了一個例子,代碼如下:const double num = 1.618033988749895; double re; string te; te = string.Format("{0}", num); re = double.Parse(te); System.Console.WriteLine("{0}: re != num", re != num); te = string.Format("{0:R}", num); re = double.Parse(te); System.Console.WriteLine("{0}: re = num",re == num);運行結果:True:re !=num True: re== num我就有疑問了,num被賦值后,輸出時會丟失一位,即丟失5,那,num的值在存入計算機中時,是按15位的存的還是16位存的,也就是最后一位5有沒有被存入?假如存入了5,那么是不是在一般情況下使用num的值時不包括5啊,比如輸出num值時輸出的數不包括5。使用“{0:R}”時,會與原來數值相比較,原來的數是指存入的數還是還是代碼中的數???
- 2 回答
- 0 關注
- 796 瀏覽