我需要将字符串转换回double,但字符串并不总是相同的格式。在一种情况下,它是“N0”,在另一个“#,##”中,另一种是货币“C0”。好的是,我知道该字符串的格式与之前的过程相同,它已经从double转换为string。将字符串转换为已知格式的双精度值
我怎样才能转换回双。数字只是简单地赋值double.parse或Convert.ToDouble,但货币值不会。
string format = "{0:C0}";
double dollar = 1,234.00;
string dollarString = String.Format(format, doubleValue); // == "$1,234"
double newDollar = Convert.ToDouble(dollarString); // Fails
最后一行是问题所在。我假设我需要使用IFormatProvider或文化或什么的,但我不完全确定。
我不能具体引用格式是货币,因为“格式”并不总是货币。
想法?
您也可以传入'TryParseExact'并传递格式化字符串,您知道它将匹配。 (如果可以是多个选项之一,则还可以传入一组字符串) –
注意:如果计算机语言设置不同,则CurrentCulture最终可能会以错误的方式解析它。 例如在瑞士,货币分隔符是一个点(。),而在德国是逗号(,)。 –
@ScottChamberlain在.NET中没有像TryParseExact这样的函数。 –