DateTime dtS=DateTime.Now;
        for (float i = 0; i < 1600000; i++)//一千六百万次
        {
         //空操作
        }
        DateTime dtE=DateTime.Now;
        TimeSpan ts = dtE - dtS;
        Console.WriteLine(ts.Milliseconds);1600万运行只要100多毫毛,可是为什么改成1700就常时间没反应了呢??

解决方案 »

  1.   

    重复帖?没写原因问题的原因是这样的:
    对于浮点型来说,它是用科学计数法表示的。换句话说,它的数据是有丢失的,当你的数据过大,超出了它的小数表示位数的时候,你的++操作就完全推动了意义。具体的说,它只能精确的表示7位有效数字,当你的数据大于这个值时如果你增减的值小于一定的数量极,就不会对这个浮点值产生影响。其实调试一下你就会发现你的程序:当i=167XXXXX.0(具体的数值我不记得了)的时候,无论你执行多少次++操作你的值都不会变化。改的方法也很简单:
        DateTime dtS=DateTime.Now; for (int i = 0; i < 1600000; i++)//一千六百万次 { //空操作 } DateTime dtE=DateTime.Now; TimeSpan ts = dtE - dtS; Console.WriteLine(ts.Milliseconds);
    然后再执行你的操作吧:)