请教各位技术大牛一个小问题:
程序如下:
float x = 19810927.00122f;
            Console.WriteLine(x);
            Console.ReadLine();
输出结果为1.981093E+07,请问怎么把输出结果转换成自然数或十进制数?
小弟新手,望赐教

解决方案 »

  1.   

    x.ToString("F5")
    但精度已经丢失
      

  2.   

                decimal x = 19810927.00122m;
                Console.WriteLine(x);
                Console.ReadLine();
      

  3.   

    Console.WriteLine("{0:G8}", x);
    Console.WriteLine("{0:R}", x);
    都可以。https://msdn.microsoft.com/zh-cn/library/dwhawy9k(v=vs.110).aspx#RFormatString单精度浮点数只有7位有效数字,所以你不要去纠结“为什么最后一位显示为数字8”的问题,因为你的数字在计算机中表示其实就是打印出来的那样的数字(前7位是正确的),而不是你在代码中所写的那个数字。
      

  4.   


    你的这个说法其实跟格式化字符 R 的意思是一致的(虽然你没有 msdn 说的那么明确)。
      

  5.   

    关于“精度”的问题,你可以试试float x = 198109274.00122f;
    然后打印结果,实际上打印出来的结果也是对的!因为计算机中只有7位有效数字。
      

  6.   

    float x = 19810927.00122f; ???
    19810927.00122 已经超出了 float 可表示的范围了double x = 19810927.00122;
    就不会有问题了也不必一味的追求类型
    var x = 19810927.00122;
    就简单有效的多
      

  7.   

    string str = ((decimal)x).ToString();