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"]);
}
}
}
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"]);
}
}
}
解决方案 »
- 如何让richtextbox当前输出信息为红色,之前的为黑色
- 关于定时抓取的问题
- 双击打开窗体老提示文件下载安全警告的弹出框,如图:
- 还是关于datagridview里的checkbox列点击事件的严重的问题.
- 在C#中如何用程序窗口锁定桌面?
- app.config文件的使用?
- 关于datagridview的一个问题 帮帮忙 谢谢了 ...
- 求:水晶报表自定义纸张连续打印的解决办法
- 求一个高效的排序算法
- 救急:如何在一个datagrid里面显示2个表
- 哪位用过MagicLibrary里面的WizardControl,或者是WizardDialog的,请进!
- '"+textbox1.text+"'谁能详细说明一下这个表达式的意思?我是百思不得其解
0.00001M注释掉是表示这样写不对吗?
难道是framework的版本不一样?
<num1>1E-5</num1>
的形式,
反序列话的时候报
Decimal.Parse的格式错误...
原因找到了,可是不知道怎么解决,因为序列化、反序列化都不由我控制啊。
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
试过用double确实没有问题,可惜精度不够。
不过如果1.1没有问题的话,可以考虑升级,感谢帮助。