2013-06-04 55 views
4

我正在使用Sharepoint 2007中的工作流程。在工作流程中,我訪問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」。是這個原因.Thanx。 – SPKan

+0

是的,很有可能。該文化使用','作爲小數分隔符。使用'CultureInfo.InvariantCulture'解析或使用使用','而不是'''的'的十進制文字。 – Oded

回答

6

我強烈的懷疑是,您在一臺機器上運行的文化沒有使用.作爲小數點。

明確指定文化,例如到不變的文化

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

謝謝我會嘗試這種方法。我們的服務器在德國。但是在Web部件中已經有Double.Parse()方法可以正常工作。感謝您的回答。 – SPKan

+1

Thanx工作。 – SPKan