сериализация удваивается в .net при сохранении точности - PullRequest
1 голос
/ 04 апреля 2011

Я хочу иметь возможность сохранить несколько массивов двойников в файл. Я не хочу использовать бинарный сериализатор, как это работает в средах, где это недоступно (например, Silverlight / WP7). Мне бы хотелось, чтобы я подумал об использовании текстового формата, что легко, но я боюсь, что буду использовать точность, когда числа округляются для печати. Так есть ли «правильный» способ сериализации двойного в текстовый или двоичный формат и сохранения полной точности?

Ответы [ 2 ]

2 голосов
/ 04 апреля 2011

BinaryWrite.Write(double) можно безопасно использовать для записи (а затем чтения) double.Таким образом, вы можете зацикливаться вокруг массива и записывать двойные числа.Но, как сказал Джон, вы также можете использовать BitConverter.GetBytes() и написать его вручную.

1 голос
/ 04 апреля 2011

Ну, вы можете использовать спецификатор "r" (roundtrip) для преобразования двойного в строку, или вы можете использовать BitConverter.DoubleToInt64Bits для преобразования double в long (который я предположим, что вы уверены в правильности сериализации), а затем BitConverter.Int64BitsToDouble на другом конце.

Одна проблема - эти методы недоступны в WP7. Они в настольном Silverlight, хотя.

Для Windows Phone 7 вы можете использовать BitConverter.GetBytes(double) и BitConverter.ToDouble(byte[], int) вместо этого.

...