最近在看《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}”时,会与原来数值相比较,原来的数是指存入的数还是还是代码中的数啊?
添加回答
举报
0/150
提交
取消