do you mind if you show your code? the following works for me:
using System;
using System.IO;
using System.Data;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;namespace ConsoleApplication1
{
 class Class1
 {
  static void Main(string[] args)
  {   DataTable dt = new DataTable();
   dt.Columns.Add("num1",typeof(Decimal));   DataRow dr = dt.NewRow();
   dr["num1"] =  0.00001;//0.00001M;
   dt.Rows.Add(dr);   string sFile = "C:\\Temp.bin";   Stream s1 = File.Open(sFile , FileMode.Create);
   BinaryFormatter bf1 = new BinaryFormatter();
   bf1.Serialize(s1, dt);
   s1.Close();   Stream s2 = File.Open(sFile, FileMode.Open);
   BinaryFormatter bf2 = new BinaryFormatter();
   DataTable y = (DataTable)bf2.Deserialize(s2);
   s2.Close();   Console.WriteLine(y.Rows[0]["num1"]);
  }
 }
}

解决方案 »

  1.   

    几乎完全一样的代码啊,
    0.00001M注释掉是表示这样写不对吗?
    难道是framework的版本不一样?
      

  2.   

    后来我们自己跟踪了一下,序列化时0.00001被序列化成了
    <num1>1E-5</num1>
    的形式,
    反序列话的时候报
    Decimal.Parse的格式错误...
    原因找到了,可是不知道怎么解决,因为序列化、反序列化都不由我控制啊。
      

  3.   

    which version of .NET are you using? I cannot reproduce it on 1.1 and 2.0using System;
    using System.IO;
    using System.Data;
    using System.Xml.Serialization;namespace ConsoleApplication1
    {
     class Class1
     {
      static void Main(string[] args)
      {   DataTable dt = new DataTable();
       dt.Columns.Add("num1",typeof(Decimal));   DataRow dr = dt.NewRow();
       dr["num1"] =  0.00001M;//0.00001M;
       dt.Rows.Add(dr);   DataSet ds = new DataSet();
       ds.Tables.Add(dt);   ds.AcceptChanges();   string sFile = "C:\\Temp.xml";   Stream s1 = File.Open(sFile , FileMode.Create);
       XmlSerializer xs = new XmlSerializer(typeof(DataSet));
       xs.Serialize(s1, ds);
       s1.Close();   Stream s2 = File.Open(sFile, FileMode.Open);
       XmlSerializer xs2 = new XmlSerializer(typeof(DataSet));
       DataSet y = (DataSet)xs2.Deserialize(s2);
       s2.Close();   Console.WriteLine(y.Tables[0].Rows[0]["num1"]);
      }
     }
    }
    also, if problems persist, consider to get the data in double format instead of decimal format
      

  4.   

    是1.0.3705,版本方面没什么办法,因为是做产品,只能用的正版软件。
    试过用double确实没有问题,可惜精度不够。
    不过如果1.1没有问题的话,可以考虑升级,感谢帮助。