본문 바로가기
개발 이야기/C# 이야기

C# String.Format 소수점 자리표시

by 런던살자 2019. 6. 20.

안녕하세요 마블랑입니다.

 

C#을 통해 수치를 표시해주는 프로그램을 만들때 소수를 표시해야하고 소수점 자리수를 맞춰줘야 하는 경우가 있습니다.

 

그것과 관련하여 마블랑이 간단하게 소수점 자리를 표시하는 방법에 대해서 정리하였습니다.

 

아래 그림과 같이 string.Format을 이용하면 되는데요.

기존에 C++에서 사용하던 Format 형식과는 조금 다른것을 알수 있습니다.

 

string str = string.Format("{0:0.00} ", double.Parse(textBox.Text));

 

Format을 지정하는 부분 {0:0.00} 을 보겠습니다. 

 

콜론 앞에 있는 부분은 Format에 들어갈 매개변수(?)의 순서라고 보면됩니다. 

 

지금은 매개변수가 Double형 하나만 있지만 여러개를 넣어야 하는 경우 {0}, {1}, {2}, {3} 이런식으로 추가를 할수 있죠

 

콜론 뒷에 0.00 은 소수점 자리를 지정해주는 부분입니다. 0으로 표시된 부분은 공백일 경우에도 항상 표시가 되는 부분입니다.

 

아래 출력화면을 보겠습니다.   

 

8을 입력할때 소수점을 넣어주지 않았습니다. 하지만 출력에는 소수점으로 표시가 됩니다.

다음은 소수 첫째자리까지 입력한 결과를 보겠습니다. 첫째자리는 공백이 아니므로 1이 표시되고 둘째자리는 공백이므로 0으로 표시가 됩니다.

아래 화면도 같은 원리로 표시가 됩니다.

다음은 둘째자리까지 표시가 되는 포맷에 세자리까지 추가를 해보았습니다.

 

얼핏보기에는 표시가 되지 않는 것처럼 보이지만 표시가 되는 부분까지 반올림을 하게됩니다. (아래 화면까지 봐주시기 바랍니다 ^^)

포맷에 정의하지 않은 정수부분은 어떻게 될까요? 아무문제 없이 표시가 됩니다.

 

그럼 소수 부분에서 반올림이 되지 않게 표시하려면 어떻게 해야할까요?

 

코드를 아래와 같이 수정하였습니다. 

 

달라진 점은 셋째자리에 #을 추가했는데요, #은 값이 있으면 표시하고 없으면 표시하지 않는다고 보시면 됩니다.

 그럼 결과를 확인해 보겠습니다. 셋째자리까지 정상적으로 표시가 됩니다.

하지만 #도 자리수가 넘어가면 0인 부분까지 반올림이 되므로 주의하시기 바랍니다.

 

컴퓨터를 통해 회계프로그램 같이 수치를 표시하는 프로그램을 구현하는 경우가 많아지므로 유용하게 사용될것 같습니다.

 

이상 마블랑이었습니다.

 

읽어주셔서 고맙습니다.

댓글