본문 바로가기
.NET

C# float string format 전체 길이와 소수점 자리수 제어

by leo21c 2025. 7. 28.

C#에서 float 또는 double 값을 문자열로 포맷할 때, 전체 길이소수점 이하 자리수를 제어하는 방법은 ToString() 또는 String.Format()을 활용하는 것이 일반적이에요. 아래에 다양한 포맷 옵션을 정리해드릴게요. 😊

🎯 소수점 자리수 지정: "F" 포맷

csharp
float value = 123.45678f;
string formatted = value.ToString("F2"); // 결과: "123.46"
  • "F2"는 소수점 이하 2자리까지 표시.
  • 반올림 처리됨.

💰 숫자 전체 길이 + 소수점: "N" 포맷

csharp
float value = 12345.6789f;
string formatted = value.ToString("N3"); // 결과: "12,345.679"
  • "N3"는 천 단위 구분자 포함 + 소수점 이하 3자리.
  • "N0"은 소수점 없이 정수만 표시.

🧮 String.Format() 사용 예시

csharp
float value = 1.23456f;
string result = string.Format("{0,10:F2}", value); // 결과: "     1.23"
  • {0,10:F2}는 전체 10자리 필드에 소수점 이하 2자리로 출력.
  • 왼쪽에 공백이 채워져 오른쪽 정렬됨.

📌 사용자 지정 포맷 (정렬 포함)

csharp
float value = 3.14159f;
string result = string.Format("{0,-10:F3}", value); // 결과: "3.142     "
  • -10은 왼쪽 정렬, F3은 소수점 이하 3자리.

⚠️ 주의사항

  • float은 부동소수점 오차가 있을 수 있으므로 정밀한 계산이 필요한 경우 decimal을 고려하세요.
  • 포맷 문자열은 문화권 설정에 따라 소수점 기호(. vs ,)가 달라질 수 있어요.

C#의 $"{...}" 문자열 보간(interpolation) 문법에서도 float 값을 포맷팅하고 전체 길이 및 소수점 자리수를 지정할 수 있어요. 아래에 다양한 예시를 정리해드릴게요. 😄

✨ 기본 소수점 자리수 지정

csharp
float value = 123.45678f;
string result = $"{value:F2}"; // 결과: "123.46"
  • F2: 소수점 이하 2자리까지 표시 (반올림됨)

📏 전체 길이 지정 (정렬 포함)

csharp
float value = 1.23456f;
string result = $"{value,10:F2}"; // 결과: "     1.23"
  • 10: 전체 필드 너비 (오른쪽 정렬)
  • F2: 소수점 이하 2자리
csharp
string result = $"{value,-10:F2}"; // 결과: "1.23      "
  • -10: 왼쪽 정렬

🧮 여러 값 정렬 예시

csharp
float a = 3.14159f;
float b = 2.71828f;
Console.WriteLine($"|{a,8:F3}|{b,8:F3}|");
// 결과: |   3.142|   2.718|
  • 각 값이 8자리 필드에 소수점 이하 3자리로 정렬됨

🌍 문화권별 포맷 (예: 천 단위 구분자)

csharp
float bigNumber = 1234567.89f;
string result = $"{bigNumber:N2}"; // 결과: "1,234,567.89" (en-US 기준)
  • N2: 천 단위 구분자 포함 + 소수점 이하 2자리

⚠️ 참고사항

  • 보간식 내부에서 {value,10:F2}처럼 정렬과 포맷을 동시에 지정할 수 있어요.
  • float 대신 decimal을 사용하면 정밀도가 더 높습니다.
  • 보간된 문자열은 string.Format()보다 가독성이 좋고 유지보수가 쉬워요.
LIST