日期:2014-05-18  浏览次数:20757 次

VS2008编程中遇到问题!
我刚学这个东西,今天编了个程序,老是出现如下图结果,求大虾指教。

程序如下:
namespace 循环产生抛物线
{
  class Program
  {
  static void Main(string[] args)
  {
  double x;
  for (x = -2; x < 2; x += 0.1)
  {
  Console.Write("{0}", x);
  Console.Write("\n");
  }
  Console.ReadKey();
  }
  }
}

但是结果如下:
-2
-1.9
-1.8
-1.7
-1.6
-1.5
-1.4
-1.3
-1.2
-1.1
-0.999999999999999
-0.899999999999999
……中间让我省略了
……
-0.0999999999999994
6.38378239159465E-16
0.100000000000001……
……
1
1.1
1.2
……




我想问为什么会出现这种情况,中间为什么出现无限小数????

------解决方案--------------------
因为double也会有误差。

如果要界面好看,可以格式化输出(其中f是浮点,1是一位小数):
Console.Write("{0:f1}", x);
------解决方案--------------------
double 类型