2014-09-16 3 views
0

, потому что я не могу правильно преобразовать? Что я делаю не так? Значение I Need My variable идентично типу строки.Преобразование строки в десятичный сбой

Должен ли я использовать другой тип?

static void Stringparadecimal() 
{ 
    string vcarga = "1324.54"; 
    decimal vcargadec = decimal.Parse(vcarga); 

    Console.WriteLine("Convertendo String vcargad para formato decimal "); 
    Console.WriteLine("Tipo da variavel vcargadec : " + vcargadec.GetType()); 
} 
+0

Какова ваша 'CurrentCulture'? –

+0

Вы видели http://pt.stackoverflow.com/? – Shog9

ответ

4

Укажите данные формата путем подачи правильной культуры (в данном случае означает InvariantCulture США на английском языке):

decimal.Parse("1324.54", CultureInfo.InvariantCulture) 
+0

Большое вам спасибо! Интересно, почему, когда я использую .Parse не переводить то же самое? –

+0

Поскольку настройки культуры по умолчанию различны, возможно, потому, что на вашем компьютере установлен другой язык. –

0

Вы должны учитывать культуру, в которой вы анализируете десятичное значение. Некоторые культуры считают, что '.' является десятичной точкой, а некоторые другие культуры считают ','. Всегда полезно указывать культуру для использования при анализе десятичных значений. В вашем случае поставьте CultureInfo.InvariantCulture на метод Double.Parse.

+0

Спасибо за внимание. Я пока не могу объявить вам полезный ответ, не хватает очков =/ –

0

попробовать это ...

decimal d = decimal.Parse("1324.54", CultureInfo.InvariantCulture); 
Console.WriteLine(d.ToString(CultureInfo.InvariantCulture)); 
0
Convert.ToDecimal("1324.54", System.Globalization.CultureInfo("en-US"), "{0:c}". 

Вы можете иметь для перехода от en-US к той стране, которую вы пишете, для кодирования.

+0

Это наоборот ... –

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