float是单精度浮点型,
double是双精度浮点型。在定义的时候double a=2.3;一句没有问题。
            float b=2.3;里面有错误,应该定义成这样,float b=2.3f;这样定义说是为了和double区分,可是 float b=2.3;里面已经有float了,那就说明是单精度浮点型,为什么还有转化呀?

解决方案 »

  1.   

    C#定义就是这样的,所以你也必须这么写。因为后面没有f的实数VS一律被认为是double型。而float是不能用double型赋值的。
      

  2.   

    不是为了转化,是标志,区别于double
      

  3.   

    C#定义就是这样标志,区别于double。
      

  4.   

    在定义的时候已经说是float(单精度浮点型)了,还需要区别吗?
    要是还需要区别的话,那 float b=2.3里面的float还有意义吗?
      

  5.   

    float,单精度浮点数,32位长度,1位符号位,8位指数位与23位数据位,在.net中又称为Single。double,64位长度的双精度浮点数,1位符号位,11位指数位,52位数据位。关系是:int可以转换成float和double,float只能强制转换成int,但是可以隐式转换成double,double只能强制转换成float和int。
    double d = 0.6;
    float f = (float)d;
    double d2 = f;
    float:数值范围为-3.4E38~3.4E38(7个有效位) 
    double:数值范围-1.7E308~1.7E308(15个有效位)
      

  6.   

    float b=2.3;  //2.3被认为是double型的,这时就存在转换了,但又是从高往低转,所以提示出错
    float b=2.3f; //f标记2.3是float型的,float赋给float,正确。
      

  7.   

    那也就是说在C#中,只要是定义一个实数常量都为double型,只不过其他的转换都是隐式的,而double到float不存在隐式转换。