我需要將字符串轉換回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這樣的函數。 –