static void Main(string[] args)
        {
            float a = 1.0f;
            float b = 7.842357E-10f;
            float c = 3.170807E-9f;
            Console.WriteLine("(a+b)+c= "+(a+b)+c);
            Console.WriteLine("a+(b+c)= "+a+(b+c));
            Console.ReadLine();
        }输出:
(a+b)+c = 13.170807E-09
a+(b+c) = 13.955043E-09

解决方案 »

  1.   

    C#中浮点数中的E在计算机中怎么表示的呢  ?在下等回答!(不是要问为什么结合律不满足 而是想知道为什么(a+b)+c的答案是13.170807E-09?)
      

  2.   

    说到底,是精度的问题,不能精确表示浮点数,只是一种近似。
    你可以参考
    http://msdn.microsoft.com/zh-cn/library/system.single.aspx后面的说明。
      

  3.   

    e表示底数10
    即:7.842357*10的-10次方   
    F是float的缩写  如 float a=12.56f
    表示12.56是float类型的 不是double类型!!!
      

  4.   

    float a = 1.0f;
    float b = 7.842357E-10f;
    float c = 3.170807E-9f;
    Console.WriteLine("(a+b)+c= {0}", (a + b) + c);
    Console.WriteLine("a+(b+c)= {0}", a + (b + c));
    Console.ReadLine();
      

  5.   


    呵呵,因为(a+b)得1,而 "(a+b)+c= "+(a+b)+c  自然就是 13.170807E-09 啦。你想让一个字符串跟两个浮点数相+,只能有这个结果。
      

  6.   


      Console.WriteLine("(a+b)+c= "+((a+b)+c));
      Console.WriteLine("a+(b+c)= "+(a+(b+c)));
    “+”顺序执行所以先字符串结合了,而不是数字相加