float x=1.23;
double a= Convert.ToDouble(x);
MessageBox(a.ToString());
后面多了很多小数

解决方案 »

  1.   

                float x = 1.23f;
                decimal a = Convert.ToDecimal(x) ;
                double d = Convert.ToDouble(a);
                MessageBox.Show(d.ToString());用decimal 
      

  2.   


                float x = 1.23f;
                double a = double.Parse(x.ToString());
                Console.WriteLine(a.ToString());
      

  3.   

    我试着回答一下:1、错误提示?
    double是64为双精度,隐式转换为32位的float会造成精度丢失,所以当然不能转换,除开你用一些关键字(好像是checked)标识下,而c#默认1.23为double型,所以会有错误提示,你加个f标识为float即可;2、多了很多小数位?
    因为无论double还是float,都是ieee754标准的浮点数,1.23这种小数是无法精确表示的,因此32位float的1.23转为64位的double时,结果也会出现很小的误差,至于会是多少,可以使用浮点数和ieee754表示法工具去自己测试一下。
      

  4.   

    用Math.Round将无效的尾数四舍五入下。
      

  5.   

    float的前七位是正确的。取前七位就可以了。
      

  6.   

    1、float x=1.23;你这样不能编译通过要在后面加f
    2\从float到double的转换是宽转换,所以可以直接
    float x = 1.23F;
    double z = x;
    Console.WriteLine(z.ToString("f2"));
    3、值保存的格式与显示是两回事,所以f2让它显示两位小数
      

  7.   

    float x=1.23;
    double a= Convert.ToDouble(x);
    MessageBox(a.ToString("f2"));
    保留2位小数