C에서 정수 및 부동 소수점 숫자를 사용하는 방법#
이 자습서에서는 C#의 숫자 형식에 대해 설명합니다. 작은 양의 코드를 작성한 다음 해당 코드를 컴파일하고 실행합니다. 이 자습서에는 C#의 숫자 및 수학 연산을 살펴보는 일련의 단원이 포함되어 있습니다. 이러한 단원에서는 C# 언어의 기본 사항을 설명합니다.
팁
포커스 모드 내에 코드 조각을 붙여넣으려면 바로 가기 키(Ctrl + v 또는 cmd + v)를 사용해야 합니다.
사전 준비 사항
이 자습서에서는 컴퓨터가 로컬 개발용으로 설정되어 있다고 가정합니다. 설치 지침 및 .NET의 애플리케이션 개발 개요는 로컬 환경 설정을 참조하세요 .
로컬 환경을 설정하지 않으려면 이 자습서의 브라우저 내 대화형 버전을 참조하세요.
정수 계산 살펴보기
numbers-quickstart라는 디렉터리를 만듭니다. 현재 디렉터리로 만들고 다음 명령을 실행합니다.
dotnet new console -n NumbersInCSharp -o .
중요
.NET 6 용 C# 템플릿은 ‘최상위 문’을 사용합니다. .NET 6으로 이미 업그레이드한 경우 애플리케이션이 이 문서의 코드와 일치하지 않을 수 있습니다. 자세한 내용은 최상위 문을 생성하는 새 C# 템플릿을 참조하세요.
.NET 6 SDK는 다음 SDK를 사용하는 프로젝트에 대한 암시적global using
지시문 집합도 추가합니다.
- Microsoft.NET.Sdk
- Microsoft.NET.Sdk.Web
- Microsoft.NET.Sdk.Worker
이러한 암시적 global using
지시문에는 해당 프로젝트 형식의 가장 일반적인 네임스페이스가 포함됩니다.
자세한 내용은 암시적 using 지시문 문서를 참조하세요.
원하는 편집기에서 Program.cs를 열고 파일의 콘텐츠를 다음 코드로 바꿉니다.
int a = 18;
int b = 6;
int c = a + b;
Console.WriteLine(c);
명령 창에 dotnet run
을 입력하여 이 코드를 실행합니다.
정수를 사용하는 기본 수학 연산 중 하나를 살펴봤습니다. int
형식은 정수(0, 양의 정수 또는 음의 정수)를 나타냅니다. 더하기의 경우 +
기호를 사용합니다. 정수에 대해 다른 일반적인 수학 연산은 다음과 같습니다.
- 빼기의 경우
-
- 곱하기의 경우
*
- 나누기의 경우
/
다른 연산을 살펴보세요. c
의 값을 쓰는 줄 뒤에 다음 줄을 추가합니다.
// subtraction
c = a - b;
Console.WriteLine(c);
// multiplication
c = a * b;
Console.WriteLine(c);
// division
c = a / b;
Console.WriteLine(c);
명령 창에 dotnet run
을 입력하여 이 코드를 실행합니다.
원하는 경우 동일한 줄에서 여러 수학 연산을 작성하여 실험할 수도 있습니다. 예를 들어 c = a + b - 12 * 17;
을 사용해 보세요. 변수와 상수를 혼합해서 사용할 수 있습니다.
팁
C# (또는 다른 프로그래밍 언어)를 살펴보면서 코드를 작성할 때 실수를 하게 될 것입니다. 컴파일러는 그러한 오류를 찾아 사용자에게 보고합니다. 출력에 오류 메시지가 포함되어 있으면 예제 코드와 창의 코드를 자세히 살펴보고 수정 사항을 확인하세요. 이 연습은 C# 코드의 구조를 학습하는 데 도움이 됩니다.
첫 번째 단계를 완료했습니다. 다음 섹션을 시작하기 전에 현재 코드를 별도의 메서드로 이동합니다. 메서드는 함께 그룹화되고 이름이 지정된 일련의 문입니다. 메서드 이름 뒤에 ()
를 써서 메서드를 호출합니다. 코드를 메서드로 구성하면 새 예제 작업을 쉽게 시작할 수 있습니다. 작업을 마치면 코드가 다음과 같이 됩니다.
WorkWithIntegers();
void WorkWithIntegers()
{
int a = 18;
int b = 6;
int c = a + b;
Console.WriteLine(c);
// subtraction
c = a - b;
Console.WriteLine(c);
// multiplication
c = a * b;
Console.WriteLine(c);
// division
c = a / b;
Console.WriteLine(c);
}
줄 WorkWithIntegers();
는 메서드를 호출합니다. 다음 코드는 메서드를 선언하고 정의합니다.
연산 순서 알아보기
WorkingWithIntegers()
에 대한 호출을 주석으로 처리합니다. 그러면 이 섹션에서 작업할 때 출력이 덜 복잡해집니다.
//WorkWithIntegers();
//
는 C#에서 주석을 시작합니다. 주석은 소스 코드에 유지하되 코드로 실행하지는 않으려는 모든 텍스트입니다. 컴파일러는 주석에서 실행 코드를 생성하지 않습니다. WorkWithIntegers()
는 메서드이므로 한 줄만 주석으로 처리해야 합니다.
C# 언어는 수학에서 배운 규칙과 일치하는 규칙으로 여러 가지 수학 연산의 우선 순위를 정의합니다. 곱하기와 나누기는 더하기와 빼기보다 우선 순위가 높습니다. 다음 코드를 WorkWithIntegers()
호출 뒤에 추가하고 dotnet run
을 실행하여 살펴봅니다.
int a = 5;
int b = 4;
int c = 2;
int d = a + b * c;
Console.WriteLine(d);
출력에서는 곱하기가 수행된 후 더하기가 수행되었음을 보여 줍니다.
먼저 수행하려는 연산 주위에 괄호를 추가하여 다른 연산 순서를 적용할 수 있습니다. 다음 줄을 추가하고 다시 실행합니다.
d = (a + b) * c;
Console.WriteLine(d);
여러 다른 연산을 결합하여 자세히 살펴보세요. 다음과 같은 줄을 추가합니다. dotnet run
을 다시 시도해 봅니다.
d = (a + b) - 6 * c + (12 * 4) / 3 + 12;
Console.WriteLine(d);
정수에 대해 흥미로운 동작을 이미 알고 있을 수 있습니다. 정수 나누기는 결과에 소수 또는 소수 부분이 포함될 것으로 예상되는 경우에도 항상 정수 결과를 생성합니다.
이러한 동작을 본 적이 없다면 다음 코드를 시도해 보세요.
int e = 7;
int f = 4;
int g = 3;
int h = (e + f) / g;
Console.WriteLine(h);
dotnet run
을 다시 입력하여 결과를 확인합니다.
넘어가기 전에 이 섹션에서 작성한 모든 코드를 새 메서드에 배치해 보겠습니다. 이러한 새 메서드의 이름을 OrderPrecedence
라고 하겠습니다. 코드는 다음과 비슷합니다.
// WorkWithIntegers();
OrderPrecedence();
void WorkWithIntegers()
{
int a = 18;
int b = 6;
int c = a + b;
Console.WriteLine(c);
// subtraction
c = a - b;
Console.WriteLine(c);
// multiplication
c = a * b;
Console.WriteLine(c);
// division
c = a / b;
Console.WriteLine(c);
}
void OrderPrecedence()
{
int a = 5;
int b = 4;
int c = 2;
int d = a + b * c;
Console.WriteLine(d);
d = (a + b) * c;
Console.WriteLine(d);
d = (a + b) - 6 * c + (12 * 4) / 3 + 12;
Console.WriteLine(d);
int e = 7;
int f = 4;
int g = 3;
int h = (e + f) / g;
Console.WriteLine(h);
}
정수 전체 자릿수 및 한도 살펴보기
마지막 샘플에서는 정수 나누기가 결과를 자르는 것을 보여 줍니다. modulo 연산자(%
문자)를 사용하여 나머지를 얻을 수 있습니다. OrderPrecedence()
메서드 호출 뒤에 다음 코드를 시도합니다.
int a = 7;
int b = 4;
int c = 3;
int d = (a + b) / c;
int e = (a + b) % c;
Console.WriteLine($"quotient: {d}");
Console.WriteLine($"remainder: {e}");
C# 정수 형식은 한 가지 다른 면에서 수학의 정수와 다릅니다. 즉 int
형식에는 최소 한도와 최대 한도가 있습니다. 이 코드를 추가하여 해당 한도를 확인합니다.
int max = int.MaxValue;
int min = int.MinValue;
Console.WriteLine($"The range of integers is {min} to {max}");
계산이 해당 한도를 초과하는 값을 생성하는 경우 언더플로 또는 오버플로 조건이 발생합니다. 답은 한 한도에서 다른 한도로 래핑하는 것으로 나타납니다. 다음 두 줄을 추가하여 예제를 확인합니다.
int what = max + 3;
Console.WriteLine($"An example of overflow: {what}");
답은 최소 (음의) 정수와 아주 가깝습니다. min + 2
와 같습니다. 더하기 연산은 정수에 대해 허용된 값을 오버플로했습니다. 오버플로가 가능한 가장 큰 정수에서 가장 작은 정수로 “래핑”하기 때문에 답은 아주 큰 음수입니다.
int
형식이 요구 사항을 충족하지 않을 때 사용하는 여러 한도와 전체 자릿수가 있는 다른 숫자 형식이 있습니다. 다음으로 다른 형식을 살펴보겠습니다. 다음 섹션이 시작하기 전에 이 섹션에서 작성한 코드를 별도의 메서드로 옮깁니다. 이 EventHandler의 이름을 TestLimits
로 지정합니다.
double 형식 작업
double
숫자 형식은 배정밀도 부동 소수점 수를 나타냅니다. 이러한 용어는 생소할 수 있습니다. 부동 소수점 수는 아주 크거나 작은 정수가 아닌 수를 나타낼 때 유용합니다. 배정밀도는 값을 저장하는 데 사용되는 이진 자릿수를 설명하는 상대 용어입니다. 배정밀도 숫자의 이진 자릿수는 단정밀도의 두 배입니다. 최신 컴퓨터에서는 단정밀도 숫자보다 배정밀도를 더 많이 사용합니다. 단정밀도 숫자는 float
키워드를 사용하여 선언됩니다. 지금 살펴보세요. 다음 코드를 추가하고 결과를 확인합니다.
double a = 5;
double b = 4;
double c = 2;
double d = (a + b) / c;
Console.WriteLine(d);
답에 몫의 소수 부분이 포함되어 있습니다. double을 사용하여 약간 더 복잡한 식을 사용해 보세요.
double e = 19;
double f = 23;
double g = 8;
double h = (e + f) / g;
Console.WriteLine(h);
double 값의 범위는 정수 값보다 훨씬 큽니다. 지금까지 작성한 코드 아래에 다음 코드를 사용해 봅니다.
double max = double.MaxValue;
double min = double.MinValue;
Console.WriteLine($"The range of double is {min} to {max}");
이 값은 과학적 표기법으로 인쇄됩니다. E
의 왼쪽에 있는 숫자는 유효 숫자입니다. 오른쪽의 숫자는 지수이며 10의 배수입니다. 수학의 10진수 숫자와 마찬가지로, C#에서 double에는 반올림 오류가 발생할 수 있습니다. 다음 코드를 사용해 보세요.
double third = 1.0 / 3.0;
Console.WriteLine(third);
유한한 횟수를 반복하는 것은 과 1/3
정확히 동일하지 않다는 것을 알고 0.3
있습니다.
과제
double
형식을 사용하여 큰 숫자, 작은 숫자, 곱하기 및 나누기로 다른 계산을 수행해 보세요. 더 복잡한 계산을 수행해 보세요. 과제를 하느라 약간의 시간을 보낸 후 작성한 코드를 새 메서드에 배치합니다. 이러한 새 메서드의 이름을 WorkWithDoubles
로 지정합니다.
10진 형식으로 작업
C#의 기본적인 숫자 형식인 정수 형식과 double 형식을 살펴봤습니다. 학습할 또 다른 형식이 있습니다. 바로 decimal
형식입니다. decimal
형식은 범위가 작지만 double
보다 전체 자릿수가 큽니다. 이 형식에 대해 살펴보겠습니다.
decimal min = decimal.MinValue;
decimal max = decimal.MaxValue;
Console.WriteLine($"The range of the decimal type is {min} to {max}");
범위가 double
형식보다 작습니다. 다음 코드를 사용하여 소수점이 있는 더 큰 전체 자릿수를 확인할 수 있습니다.
double a = 1.0;
double b = 3.0;
Console.WriteLine(a / b);
decimal c = 1.0M;
decimal d = 3.0M;
Console.WriteLine(c / d);
숫자의 M
접미사는 상수가 decimal
형식을 사용해야 함을 나타내는 방법입니다. 형식을 지정하지 않으면 컴파일러는 double
형식으로 간주합니다.
참고
문자 M
은 double
키워드와 decimal
키워드 사이에서 가장 시각적으로 고유한 문자로 선택되었습니다.
소수점 형식을 사용하는 수학에는 소수점 오른쪽에 더 많은 숫자가 있습니다.
과제
이제 여러 가지 숫자 형식을 살펴봤으므로 반지름이 2.50센티미터인 원의 면적을 계산하는 코드를 작성하세요. 원의 면적은 반지름 제곱 곱하기 PI입니다. 힌트: .NET에는 PI의 상수가 포함되어 있습니다. 즉 해당 값에 사용할 수 있는 Math.PI입니다. System.Math
네임스페이스에 선언된 모든 상수와 마찬가지로 Math.PI는 double
값입니다. 이러한 이유로 이 과제에는 decimal
값 대신 double
을 사용해야 합니다.
19에서 20 사이의 답을 받아야 합니다. GitHub에서 완성된 샘플 코드를 보고 답을 확인할 수 있습니다.
원하는 경우 다른 수식을 사용해 보세요.
“C#의 숫자” 빠른 시작을 완료했습니다. 자체 개발 환경에서 분기 및 루프 빠른 시작을 계속할 수 있습니다.
다음 문서에서는 C#의 숫자에 대해 더 자세히 알아볼 수 있습니다.
.NET