2013-06-04 2 views
4

Sharepoint 2007의 워크 플로로 작업하고 있습니다. 워크 플로에서 코드 뒤에 Inforpath에 액세스합니다. 뒤에 반복 값을 Sharepoint List에 추가하십시오.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을 소수점없이 반환합니다. 궁극적으로 수학. 라운드도 작동하지 않습니다. 이것은 내 컴퓨터에서 완벽하게 작동합니다. 그러나 QA 서버에서는 작동하지 않습니다. 제발 도와주세요 왜 10 진수를 설명하십시오. 같은 방법으로 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

고맙습니다. – SPKan

관련 문제