2013-06-04 2 views
4

Я работаю с рабочими процессами в Sharepoint 2007. В Workflow я обращаюсь к форме Inforpath за кодом и добавляю некоторые повторяющиеся значения в список Sharepoint.Decimal.Parse/Double.Parse Возвращает значение без десятичной точки

string strProfitMargin = ProfitMargin; 

decimal margin1 = decimal.Parse(strProfitMargin); 

listItem["Test9"] = Math.Round(margin1, 2).ToString(); 

Пусть для ProfitMargin я получаю значение "0.4230769230769231".

Decimal.Parse Метод возвращает 4230769230769231 без десятичной точки. В конечном счете Math.Round также не работает. Это прекрасно работает на моей машине. Но в серверах QA его не работает. Пожалуйста, помогите мне и объясните, почему метод decimal.Parse не работает? Тот же путь для double.Parse() возвращает значение без десятичной дроби.

Спасибо заранее!

+1

'Decimal.Parse ("+0,4230769230769231")' 'возвращает 0.4230769230769231' для меня. В какой культуре это работает? – Oded

+0

Наши серверы находятся в Германии. Я думаю, что это должно быть «de-DE». Это причина. Тханкс. – SPKan

+0

Да, скорее всего. Эта культура использует ',' для десятичного разделителя. Разберите с помощью 'CultureInfo.InvariantCulture' или используйте десятичный литерал, который использует', 'вместо' ''. – Oded

ответ

6

Мое сильное подозрение в том, что вы работаете на машине с культурой, которая не использует . в качестве десятичной точки.

Указывать культуру явно, например. инвариантной культуры

decimal margin1 = decimal.Parse(strProfitMargin, CultureInfo.InvariantCulture); 
+0

Спасибо, я попробую этот метод. Наши серверы находятся в Германии. Но уже есть методы Double.Parse() в веб-частях, которые отлично работают. Спасибо за ваш ответ. – SPKan

+1

Thanx это сработало. – SPKan

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