Недавно мне пришлось сериализовать двойной текст, а затем вернуть его. Значение кажется не эквивалентным:
double d1 = 0.84551240822557006;
string s = d1.ToString("R");
double d2 = double.Parse(s);
bool s1 = d1 == d2;
// -> s1 is False
Но согласно MSDN: Стандартные строки числового формата, опция "R" должна гарантировать безопасность в оба конца.
Спецификатор формата round-trip ( "R" ) используется для проверки того, что числовое значение, которое преобразуется в строку, будет обработано обратно в одно и то же числовое значение
Почему это произошло?