2014-10-18 1 views
2
NumberFormatInfo nfi = new NumberFormatInfo() 
{ 
    CurrencySymbol = "$$s. ", 
    CurrencyGroupSeparator = ".", 
    CurrencyDecimalSeparator = ",", 
    NegativeSign = "-", 
    CurrencyNegativePattern = 2 
}; 

double amount = double.Parse("$$s. 1.123,00", nfi); 

마지막 줄은 FormatException이며, 이유를 알지 못합니다. 실제로 구문 분석하는 데 노력하고있어 문자열이에서 온다 :string.Format (..., double) 다음에 같은 NumberFormatInfo를 사용하여 double.Parse가 발생하면 FormatException이 발생합니다. 왜?

String.Format(nfi, "{0:C}", 1123.00) 

답변

3

당신은 그것을 통화 값을 받아 들여야한다는 것이 이야기 아닙니다. 이를 수행하려면 NumberStyles 값을 허용하는 오버로드를 호출해야하며 NumberStyles.AllowCurrencySymbol을 포함해야합니다. 통화 값은 일반적으로 더 나은하지만 double보다 decimal로 표현되는

using System; 
using System.Globalization; 

class Test 
{ 
    static void Main() 
    { 
     NumberFormatInfo nfi = new NumberFormatInfo() 
     { 
      CurrencySymbol = "$$s. ", 
      CurrencyGroupSeparator = ".", 
      CurrencyDecimalSeparator = ",", 
      NegativeSign = "-", 
      CurrencyNegativePattern = 2 
     }; 

     double d = double.Parse("$$s. 1.123,00", 
      NumberStyles.Number | NumberStyles.AllowCurrencySymbol, 
      nfi); 
     Console.WriteLine(d); 
    } 
} 

참고 : 예를 들면.

관련 문제