2023. 10. 19. 21:22ㆍC#/기초
개요
Ⅰ. 개념
0. 수학 클래스 Math
1. 원주율: Math.PI
2. 최솟값, 최댓값: Math.Min( ), Math.Max( )
3. 절댓값: Math.Abs( )
4. 거듭제곱: Math.Pow( )
5. 제곱근: Math.Sqrt( )
6. 삼각함수: Math.Sin( ), Math.Cos( ), Math.Tan( )
Ⅱ. 코드
1. 실수 입력받고 절댓값 출력
2. 실수 두개를 입력받고 큰 값과 작은 값 출력
3. 도(degree)를 라디안(radian)으로 변환 후 삼각함수 sin, cos, tan 출력
Ⅲ. 예제
1. 원의 반지름 입력받고 원의 넓이 구해서 출력
2. 3차원 벡터 입력받고 벡터의 크기 구해서 출력
Ⅰ. 개념
0. 수학 클래스 Math
Math는 수학 함수들을 제공하는 클래스임
일부 함수들은 반환형이 double이므로,
double 대신 float를 주로 사용하는 유니티에서는 Mathf를 사용함 (f는 float를 의미함)
double과 float를 곱할 경우,
double (8 byte) * float (4 byte) = double (8 byte)이므로 형변환을 해줘야함
형변환은 바로 뒤의 것만 변환하므로, 전체를 변환하고 싶으면 괄호로 묶어줌
Ex) (float)(Math.PI * Math.Pow(radius, 2))
1. 원주율: Math.PI
Math.PI
원주율을 나타내는 상수로, double 형임
2. 최솟값, 최댓값: Math.Min( ), Math.Max( )
1) Math.Min( )
Math.Min(값1, 값2)
매개변수로 받은 두 값 중 더 작은 값(최솟값)을 구하는 함수로, 반환형은 float임
2) Math.Max( )
Math.Max(값1, 값2)
매개변수로 받은 두 값 중 더 큰 값(최댓값)을 구하는 함수로, 반환형은 float임
3. 절댓값: Math.Abs( )
Math.Abs(값)
절댓값(absolute value)을 구하는 함수로, 반환형은 float임
4. 거듭제곱: Math.Pow( )
Math.Pow(밑, 지수)
거듭제곱(power)을 구하는 함수로, 반환형은 double임
Math.Pow(x, y) // x^y
5. 제곱근: Math.Sqrt( )
Math.Sqrt(값)
제곱근(square root)을 구하는 함수로, 반환형은 double임
Math.Sqrt(x) // √x
6. 삼각함수: Math.Sin( ), Math.Cos( ), Math.Tan( )
부동소수점 오류로 인해 정확한 값이 안 나올수도 있음
Ex) Math.Cos( Math.PI / 2 ) = 6.12303176911189E-17 : 0이지만 0에 근접한 숫자가 나옴
컴퓨터는 무한대 표현을 제대로 못함
1.0f / 0.0f = ∞인 케이스와 비슷하므로, 무한대 계산 안하게 조심해야함 (특히 나눗셈)
Ex) Math.Tan( Math.PI / 2 ) = 1.63317787283838E+16
1) Math.Sin( )
Math.Sin(라디안)
사인(sine)을 구하는 함수로, 반환형은 double임
2) Math.Cos( )
Math.Cos(라디안)
코사인(cosine)을 구하는 함수로, 반환형은 double임
3) Math.Tan( )
Math.Tan(라디안)
탄젠트(tangent)를 구하는 함수로, 반환형은 double임
Ⅱ. 코드
1. 실수 입력받고 절댓값 출력
1) 코드
using System;
namespace ConsoleApp
{
class Program
{
static void Main(string[] args)
{
float inputNum, absNum;
Console.Write("실수 입력: ");
inputNum = float.Parse(Console.ReadLine());
absNum = Math.Abs(inputNum);
Console.WriteLine("절댓값: {0}", absNum);
}
}
}
2) 실행 결과

2. 실수 두개를 입력받고 큰 값과 작은 값 출력
1) 코드
using System;
namespace ConsoleApp
{
class Program
{
static void Main(string[] args)
{
float num1, num2;
Console.Write("첫번째 실수: ");
num1 = float.Parse(Console.ReadLine());
Console.Write("두번째 실수: ");
num2 = Convert.ToSingle(Console.ReadLine());
Console.WriteLine("최댓값: {0}", Math.Max(num1, num2));
Console.WriteLine("최솟값: {0}", Math.Min(num1, num2));
}
}
}
2) 실행 결과

3. 도(degree)를 라디안(radian)으로 변환 후 삼각함수 sin, cos, tan 출력
1) 코드
using System;
namespace ConsoleApp
{
class Program
{
static void Main(string[] args)
{
float degree, radian;
Console.Write("각도(Degree) 입력: ");
degree = float.Parse(Console.ReadLine());
// degree -> radian 변환
radian = degree * (float)Math.PI / 180.0f;
float sin = (float)Math.Sin(radian);
float cos = (float)Math.Cos(radian);
float tan = (float)Math.Tan(radian);
Console.WriteLine("Sin: {0}", sin);
Console.WriteLine("Cos: {0}", cos);
Console.WriteLine("Tan: {0}", tan);
}
}
}
2) 실행 결과

Ⅲ. 예제
1. 원의 반지름 입력받고 원의 넓이 구해서 출력
1) 문제
키보드로 원의 반지름을 입력받고, 원의 넓이를 구해서 출력하시오.
2) 코드
using System;
namespace ConsoleApp
{
class Program
{
static void Main(string[] args)
{
float radius;
float area;
Console.Write("원의 반지름: ");
radius = Convert.ToInt32(Console.ReadLine());
area = (float)(Math.PI * Math.Pow(radius, 2)); // (float)Math.PI * radius * radius
Console.WriteLine("원의 넓이: {0}", area);
}
}
}
3) 실행 결과

2. 3차원 벡터 입력받고 벡터의 크기 구해서 출력
1) 문제
키보드로 3차원(3D) 벡터의 x, y, z를 실수로 입력받고, 벡터의 크기를 구해서 출력하시오.
Cf) 벡터는 방향과 크기(길이)를 갖고있음
2) 코드
using System;
namespace ConsoleApp
{
class Program
{
static void Main(string[] args)
{
float x, y, z;
float magnitude; // 벡터의 크기(길이)
Console.Write("벡터 x: ");
x = float.Parse(Console.ReadLine());
Console.Write("벡터 y: ");
y = float.Parse(Console.ReadLine());
Console.Write("벡터 z: ");
z = float.Parse(Console.ReadLine());
magnitude = (float)Math.Sqrt(x * x + y * y + z * z);
Console.WriteLine("벡터의 크기: {0}", magnitude);
}
}
}
3) 실행 결과

[공부 일자] 2023.09.20
'C# > 기초' 카테고리의 다른 글
| C# 기초 - 정수의 2진법, 10진법, 16진법 (0) | 2023.10.20 |
|---|---|
| C# 기초 - [참고] 일반 표기법과 지수 표기법 (0) | 2023.10.19 |
| C# 기초 - 표준 입출력 (0) | 2023.10.16 |
| C# 기초 - C# 프로그래밍 (0) | 2023.09.30 |
| C# 기초 - 실습 환경 구축 (0) | 2023.09.28 |