序列化在.net中加倍,同时保持准确性

时间:2011-04-04 08:15:03

标签: .net serialization floating-point double

我希望能够将多个双打数组保存到文件中。我不想在无法使用的环境中使用二进制序列化器(例如Silverlight / WP7)。我想这就是我想要使用文本格式,这很容易,但我担心当数字四舍五入打印时我会使用准确性。那么是否有一种“正确”的方法将双精度序列化为文本或二进制格式并保持完全准确性?

2 个答案:

答案 0 :(得分:2)

可以安全地使用

BinaryWrite.Write(double)来编写(然后读取)double。所以你可以循环数组写双打。但正如Jon所说,您也可以使用BitConverter.GetBytes()并手动编写它。

答案 1 :(得分:1)

好吧,您可以使用“r”(往返)说明符将double转换为字符串,或者您可以使用BitConverter.DoubleToInt64Bitsdouble转换为long(我假设您对准确序列化有信心,然后在另一端BitConverter.Int64BitsToDouble

一个问题 - WP7中没有这些方法。他们虽然在桌面版的Silverlight中。

对于Windows Phone 7,您可以使用BitConverter.GetBytes(double)BitConverter.ToDouble(byte[], int)代替。