int e = 1, f = 4, g = 2;            float m = 10.5f, n = 4.0f, k;            k = (e + f) / g + n * 1.2 / g + m;
               
            Console.WriteLine(k);
             编译错误:无法将“double”隐式转换为"float";
 我查了,是n * 1.2 / g的问题,n * 1.2 / g怎么能是double型呢

解决方案 »

  1.   

    http://msdn.microsoft.com/zh-cn/vbrun/yht2cx7b(VS.80).aspx好好看看吧!
      

  2.   

       k = (e + f) / g +(float)( n * 1.2 / g )+ m;测试通过
      

  3.   

    方法一 :  k = (e + f) / g +(float)( n * 1.2 / g )+ m; 
    方法二 :  k = (float)((ee + f) / g + n * 1.2 / g + m); 
      

  4.   

    方法一 :  k = (e + f) / g +(float)( n * 1.2 / g )+ m; 
    方法二 :  k = (float)((e + f) / g + n * 1.2 / g + m); 
      

  5.   

    1.2本来就是一个double型的,你把1.2赋值给一个float类型的变量也不行呀,关键就出在这个1.2上,有了一个double型的1.2,用它运算完返回值也就成了double了
      

  6.   

    谢谢各位的回复,我现在不明白的是为什么n*1.2/g是double型,谢谢了
      

  7.   

    哦,为什么说1.2是double型的呢
      

  8.   

    Name 
     CTS Type 
     Description 
     Significant Figures 
     Range (approximate) 
     
    float 
     System.Single 
     32-bit single-precision floating point 
     7 
     ±1.5 × 10−45 to ±3.4 × 1038 
     
    double 
     System.Double 
     64-bit double-precision floating point 
     15/16 
     ±5.0 × 10 −324 to ±1.7 × 10308 
     如果我们在代码中写一个12.3,编译器会自动认为这个数是个double型。所以如果我们想指定12.3为float类型,那么你必须在数字后面加上F/f:
      

  9.   

    哦,系统默认的浮点数为double型,是吗