double d=00000024797628483952394 ;
string a=d.ToString(); //得到的结果为"2.47976284839524E-07"
我想为a="00000024797628483952394" 而不是科技计数法表示的结果

解决方案 »

  1.   

    楼主所表示的数值应该已经超出 double 所能表示的精度范围了,因此系统给你来了个四舍五入,如果实在要表示那么精确,可以使用 decimal 类型的数据另外,一个小数前面没有小点,为什么前面要放那么多没用的 0 ?
      

  2.   

    错了 漏了0. 是
    double d=0.00000024797628483952394 ; 
    string a=d.ToString(); //得到的结果为"2.47976284839524E-07" 
    我想为a="0.00000024797628483952394" 而不是科技计数法表示的结果
      

  3.   


    漏掉了 0.double d=0.00000024797628483952394 ; 
    string a=d.ToString(); //得到的结果为"2.47976284839524E-07" 
    我想为a="0.00000024797628483952394" 而不是科技计数法表示的结果
      

  4.   


     public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
                double D = 0.000000247976284839523942;
                MessageBox.Show(D.ToString("0.000000000000000000000000"));
                // 结果: 0.000000247976284839524000 最后几位舍入是由于你这个数超过双精度数最大能表示的精度了,所以它就用科学计数法来表示了
                // 如果你想处理高精度数据,估计要自己写代码处理了,我好像以前看到过有用2个double来组合运算超高精度的数
                 
            }        String GetString(double D)
            {
                String Result = String .Empty ;
                double Temp = Math.Truncate(D); 
                while (Temp > 0)
                {
                    Result = (Temp % 10).ToString() + Result;
                    Temp=Math.Truncate(Temp/10);
                }
                Temp = D - Math.Truncate(D);
                while (Temp - Math.Truncate(Temp) > 0)
                {
                    Temp *= 10;
                    Result += Math.Truncate(Temp);
                    Temp -= Math.Truncate(Temp);
                }
                return Result;
            }
        }
      

  5.   

    更正一下
    下面那个GetString 没用的,是我用来测试的,测试发现整数部分没问题,但小数部分            Temp = D - Math.Truncate(D);
    会发生误差,最后会多出来很多位