2011-11-28 2 views
41

쉼표/​​점 다음에 한 자리 숫자가있는 문자열과 100보다 작은 값의 공백을 구분하는 방법은 무엇입니까?선행 공백이있는 문자열에 대한 십진수 서식 지정

예를 들어, 12.3456의 십진수 값은 하나의 선행 공백으로 " 12.3"으로 출력되어야합니다. 10.011" 10.0"입니다. 123.123 내가 표준/사용자 정의 문자열 서식 작동하는 솔루션을 찾고 있어요 "123.1"

, 더 많은 소수점에 대한 즉

decimal value = 12.345456; 
Console.Write("{0:magic}", value); // 'magic' would be a fancy pattern. 

답변

70

이 패턴 {0,5:###.0} 작동합니다 :

string.Format("{0,5:###.0}", 12.3456) //Output " 12.3" 
string.Format("{0,5:###.0}", 10.011) //Output " 10.0" 
string.Format("{0,5:###.0}", 123.123) //Output "123.1" 
string.Format("{0,5:###.0}", 1.123) //Output " 1.1" 
string.Format("{0,5:###.0}", 1234.123)//Output "1234.1" 
+0

가장 확실합니다! 감사! :) –

+3

좋은 참조가 있습니까? 즉, 유스 케이스가 약간 다른 경우 각 부분에서 수행하는 작업. – tjrobinson

+4

@tjrobinson 모든 것이 MSDN에 있습니다. http://msdn.microsoft.com/en-us/library/0c899ak8.aspx 및 http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx – nemesv

5
value.ToString("N1"); 

변경 수입니다.

편집 : 부재 패딩 비트

value.ToString("N1").PadLeft(1); 
+0

감사합니다. 필자의 경우 PadLeft를 사용하면 {0 : ...} 자리 표시 자 문자열에 10 진수 값 이상의 텍스트가 더 많이 포함될 것입니다. –

+0

@ Taz :'PadLeft (5) '라고 써야합니다. 매개 변수는 채워질 문자열의 총 길이입니다. – Jan

+0

@Jakob : 왜'string.Format()'을 사용할 수 없습니까? – Jan

1

모든 경우를 누군가에, 소수의 라운딩을 할 것입니다 솔루션
반올림하지 않고 솔루션을 찾고있다 위

decimal dValue = Math.Truncate(1.199999 * 100)/100; 
dValue .ToString("0.00");//output 1.99