2009-04-20 2 views
6

String.Format이 문자열을 입력으로 포맷하지 않는 것 같습니다. 제가 잘못된 것을하고 있습니까? 아니면이게 원래의 행동입니까?String.Format이 문자열을 포맷하지 않습니다.

입력 : 0.37

이것은 작동하지 않습니다.

string x = String.Format("{0:P}", myString) 

출력 : 0.37

이는 않습니다.

string x = String.Format("{0:P}", Convert.ToDecimal(myString)) 

는 출력 : 37.00 %

답변

9

나는이 '복합 형식'에 대한 동작을 것으로 예상된다 생각합니다.

첫 번째 예는 숫자 서식 지정 규칙을 문자열에 적용하려고 시도하는 것입니다. 두 번째 예는 소수 자릿수를 가질 수있는 숫자에 숫자 서식 규칙을 적용하려고 시도하는 것입니다.

자세한 내용은 this article on MSDN을 참조하십시오.

2

적용하려는 형식 옵션은 숫자에만 적용됩니다. CLR이 유형에 대한 문자열을 검사하는 .NET의 스마트 문자열 개념은 없습니다.

2

나는 잘못된 것을하고 있습니까? 아니면 그냥이 기본 동작입니까?

네이티브 동작입니다. 문자열 입력을 해석하는 것은 기본적으로 Format이 아닙니다. Format은 사용자가 올바른 데이터를 제공한다고 가정합니다. 귀하의 경우, 숫자 데이터입니다. 이 숫자 인을 나타내는 경우에도 문자열은 숫자가 아닙니다 (값/의미와 표현/구문 사이의 CS에서 가장 중요한 차이입니다!).