【发布时间】:2014-02-14 03:14:22
【问题描述】:
如果我想将一个 double 转换为一个 string 并返回一个完全匹配的 double,我会使用类似:
double d1 = 1 / 3.0;
string s = d1.ToString("R");
double d2 = double.Parse(s);
但是,没有为 decimal 类型定义“R”格式(您会收到“FormatException: Format specifier was invalid”)。
产生十进制类型的往返字符串的方法是什么?
【问题讨论】:
-
代码是有效的 C#,并且(至少对于给定的示例)按预期/描述的方式工作。我不知道现在那里的代码是不是@musefan 看到的。
-
@TimS.:实际上,我错过了整个
double/decimal事情......我的错 -
小数的字符串格式已经是小数的精确值了。 这是小数点。
-
@EricLippert 我不知道变化是否发生在过去 6 年,但对我来说是在
fi语言环境(123.123m).ToString() -> 123,123。必须使用(123.123m).ToString(System.Globalization.CultureInfo.InvariantCulture) -> 123.123。让$"{123.123:r}"抛出 FormatException 是烦人的 AF。
标签: c# type-conversion decimal