float a = 10 - 0.3;  //为什么不能这样写float不就是小数吗?该怎样写?

解决方案 »

  1.   

    float a = 10 - 0.3f;加后缀,不加后缀默认是double,不允许隐式转换...
      

  2.   

    你跟他这问题一样...多看MSDN...http://topic.csdn.net/u/20110510/16/dd0ebdff-ca51-475d-bdf1-8dc9a6901291.html
      

  3.   

    按教材上说是为了避免数据的溢出,就好像short类型与int类型运算时,会被转换为int
      

  4.   

    我觉得也应该是:float a = (10 - 0.3)f;吧,应该打括号吧,
    可事实上为什么打括号要报错呢?
      

  5.   

    产生的结果是double类型的
    加上f
      

  6.   

    float a = (10 - 0.3)f;为什么不行呢?不是加了f了吗?
      

  7.   

    a = (10 - 0.3)f,10-0.3已经转换成double,无法在隐式转换会float
      

  8.   

    不过,对于float a = 10 - 0.3f而言,0.3f是一个float型,而10默认是int型,int型和float型能相加吗?
      

  9.   

    楼主多看看基本类型的隐式转换规则吧。
    隐式数值转换:
                    从 sbyte 到 short、int、long、float、double 或 decimal。
                    从 byte 到 short、ushort、int、uint、long、ulong、float double 或 decimal。
                    从 short 到 int、long、float、double 或 decimal。
                    从 ushort 到 int、uint、long、ulong、float、double 或 decimal。
                    从 int 到 long、float、double 或 decimal。
                    从 uint 到 long、ulong、float、double 或 decimal。
                    从 long 到 float、double 或 decimal。
                    从 ulong 到 float、double 或 decimal。
                    从 char 到 ushort、int、uint、long、ulong、float、double 或 decimal。
                    从 float 到 double。
    对于10-0.3f,系统会将结果隐式转换为float,之后给变量赋值的。