Recently I have had to serialize a double into text, and then get it back. The value seems to not be equivalent:
double d1 = 0.84551240822557006;
string s = d1.ToString("R");
double d2 = double.Parse(s);
bool s1 = d1 == d2;
// -> s1 is False
But according to MSDN: Standard Numeric Format Strings, the “R” option is supposed to guarantee round-trip safety.
The round-trip (“R”) format specifier is used to ensure that a numeric value that is converted to a string will be parsed back into the same numeric value
Why did this happen?