请教各位技术大牛一个小问题:
程序如下:
float x = 19810927.00122f;
Console.WriteLine(x);
Console.ReadLine();
输出结果为1.981093E+07,请问怎么把输出结果转换成自然数或十进制数?
小弟新手,望赐教
程序如下:
float x = 19810927.00122f;
Console.WriteLine(x);
Console.ReadLine();
输出结果为1.981093E+07,请问怎么把输出结果转换成自然数或十进制数?
小弟新手,望赐教
但精度已经丢失
Console.WriteLine(x);
Console.ReadLine();
Console.WriteLine("{0:R}", x);
都可以。https://msdn.microsoft.com/zh-cn/library/dwhawy9k(v=vs.110).aspx#RFormatString单精度浮点数只有7位有效数字,所以你不要去纠结“为什么最后一位显示为数字8”的问题,因为你的数字在计算机中表示其实就是打印出来的那样的数字(前7位是正确的),而不是你在代码中所写的那个数字。
你的这个说法其实跟格式化字符 R 的意思是一致的(虽然你没有 msdn 说的那么明确)。
然后打印结果,实际上打印出来的结果也是对的!因为计算机中只有7位有效数字。
19810927.00122 已经超出了 float 可表示的范围了double x = 19810927.00122;
就不会有问题了也不必一味的追求类型
var x = 19810927.00122;
就简单有效的多