2015-03-06 3 views
0

Мне нужно преобразовать строку в десятичную.Преобразование строки в десятичную в C# не работает

И я озадачен, почему он не работает

public ActionResult Test(){ 
      decimal result; 
      bool o = decimal.TryParse("-2,366.15", out result);//false 
      //decimal c = decimal.Parse("2,366.15", NumberStyles.AllowThousands,new CultureInfo("en-US")); 

      var info = new CultureInfo("en-US"); 
      bool r = decimal.TryParse("2,366.15", 0, CultureInfo.CurrentCulture, out result);//false 
      bool t = decimal.TryParse("2,366.15", 0, info, out result);//false 
      bool e = decimal.TryParse("2,366", 0, info, out result);//false 
      bool f = decimal.TryParse("-2366.15", 0, info, out result);//false 
      bool h = decimal.TryParse("2366", 0, info, out result);//true 
      bool h2 = decimal.TryParse("2366,15", 0, info, out result);//false 
      bool h3 = decimal.TryParse("2366.15", 0, info, out result);//false 

      bool g = decimal.TryParse("2,366.15", 0, CultureInfo.GetCultureInfo("en-US"), out result);//false 
      bool b = decimal.TryParse("2.366,15", out result);//true 
} 

б и ч дают истинно;

Я работаю над европейской версией IIS, поэтому b читается без проблем.

Однако я пытаюсь преобразовать «2,366.15», который используется в США десятичной и запятой для чисел. Почему добавление информации о культуре, во всех ее перестановках выше, не работает?

Tx

ответ

0

Я использую Convert для преобразования строк в десятичных или других числовых значениях, поэтому для поддержки международных форматов это то, что я использую,

Convert.ToInt32("56789" , CultureInfo.InvariantCulture); 
    Convert.ToDouble("222,034", CultureInfo.InvariantCulture); 

попробовать

decimal.TryParse("2,3655.15", CultureInfo.InvariantCulture); 
0

Фигурных его вне. он не принимает 0 в качестве входа для NumberStyles

BOOL е = decimal.TryParse ("- 2366,15", NumberStyles.Number, информация, из результата); // ложный

 Смежные вопросы

  • Нет связанных вопросов^_^