最近我不得不将一个 double 序列化为文本,然后再将其返回。价值似乎并不等同:
double d1 = 0.84551240822557006;
string s = d1.ToString("R");
double d2 = double.Parse(s);
bool s1 = d1 == d2;
// -> s1 is False
但是根据 标准数字格式字符串的说法,“ R”选项应该能够保证往返的安全。
往返(“ R”)格式说明符用于确保将转换为字符串的数值解析回相同的数值
为什么会这样?