일상/TIL

07.20 학습내용

aihtnyc_h 2023. 7. 21. 22:10
728x90
반응형
SMALL

계산기 프로그램 만들기 곱셈

소수점 자리를 문자로 인식하는데, 이것은 어떻게 예외 처리를 할것인가!!

추가로 소수점을 문자로 인식하고 있어 어떻게 해결할 것이고, .을 하나만 추가했을때만 수락해야하며, .이 2개 들어왔을 때 어떻게 처리할 것인지 고민하기!

소수점이 적용이 되지 않은 것은! float를 선언하지 않아서!

// 실수
            float number1 = 0f;
            float number2 = 0f;

// 소수점을 문자로 인식하지 않게 하는 예외처리 어떻게 할 것인가..!!
            // number를 int로만 선언했기 때문에 소수점이 안되는 것 같다!
            if (float.TryParse(Mu1.Text, out number1) == false)
            {
                MessageBox.Show("Mu1에 문자가 들어왔습니다. 숫자를 입력해주세요.");
                Mu1.SelectAll();
                Mu1.Focus();
                return;
            }
            if (float.TryParse(Mu2.Text, out number2) == false)
            {
                MessageBox.Show("Mu2에 문자가 들어왔습니다. 숫자를 입력해주세요.");
                Mu2.SelectAll();
                Mu2.Focus();
                return;
            }
//int mu = Mu(number1, number2);
            float mu =Mu(number1, number2);
            MuResult.Text = Convert.ToString(mu);
            MuResult.Text = mu.ToString();

int와 float에 범위가 어디까지 인지 궁금해져서 찾아보았다!

• int: -2,147,483,648 ~ 2,147,483,647(부호 있는 32비트 정수)

• float: ±1.5 × 10^-45 ~ ±3.4 × 10^38, 약 7자리 정밀도(32비트)


C#의 일반적인 정수 유형과 해당 범위!!

  • byte: 0 ~ 255(부호 없는 8비트 정수)
  • sbyte: -128 ~ 127(부호 있는 8비트 정수)
  • short: -32,768 ~ 32,767(부호 있는 16비트 정수)
  • ushort: 0 ~ 65,535(부호 없는 16비트 정수)
  • int: -2,147,483,648 ~ 2,147,483,647(부호 있는 32비트 정수)
  • uint: 0 ~ 4,294,967,295(부호 없는 32비트 정수)
  • long: -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807(부호 있는 64비트 정수)
  • ulong: 0 ~ 18,446,744,073,709,551,615(부호 없는 64비트 정수)

C#의 일반적인 부동 소수점 범위!!

  • float: ±1.5 × 10^-45 ~ ±3.4 × 10^38, 약 7자리 정밀도(32비트)
  • double: ±5.0 × 10^-324 ~ ±1.7 × 10^308, 약 15 ~ 17자리 정밀도(64비트)
  • decimal: ±1.0 × 10^-28 ~ ±7.9 × 10^28, 28 ~ 29자리 정밀도(128비트)

부동 소수점이란?

부동 : 물이나 공기 중에 떠서 움직임, 고정되어 있지 않고 움직임 ex) 부동인구

(네이버 국어사전)

하나의 수를 고정 소수점 부분을 나타내는 부분과 고정 소수점 위치를 나타내는 부분으로 나누어 표기

  • 컴퓨터에서 실수를 나타내는 방법
  • 소수점이 주위에 부동 할 수 있다는 사실을 나타낸다.

고정 소수점 부분 : 부동 소수점 기수법에서 실수를 나타내는 부분.

부동 소수점 기수법에서는 하나의 수를 고정 소수점 부분과 지수 부분의 두 부분으로 나누어 표현

0.0001234을 부동 소수점 기수법으로 표현하면 0.1234^-3 (노션에서 지수를 표현하는걸 모르겠….ㅠ)

고정 소수점 0.1234 || 지수 -3

0.0001234 = 0.1234 * 10 ^ -3 으로 표현된다.



오류 노트

  • 어제 만든 계산기에서 덧셈과 뺄셈을 각각 계산하려고 했는데, 둘 다 넣어야 작동하는 것을 발견했다. ( 뺄셈의 숫자로 계산..!!
  • // 덧셈 만들기 if (String.IsNullOrWhiteSpace(Sub1.Text)) // 이렇게 된것을 발견!! 뺄셈을 만들고 수정이 제대로 안되서 발생한 문제! if (String.IsNullOrWhiteSpace(Sum1.Text))
  • 곱셈을 이벤트에 집어 넣어도 작동이 안하는 현상
    • 오타..!!
    • 결과를 입력하는 창을 만들지 않았다..!! 만들어 놓고 결과를 보여줄 곳에 입력하지 않았다..
    int mu = Mu(number1, number2);
                MuResult.Text = Convert.ToString(mu);
                MuResult.Text = mu.ToString();
    
  • int와 float를 둘다 사용해서 만들고 싶은데, 왜 안되는지에 대해 먼저 생각해 보다 float가 int의 범위를 포함하고 있어서 중복이 되기 때문에 적용이 되지 않은 것! (그래서 숫자의 범위를 찾아보았다!)
  • 실수를 사용해놓고 뒤에 표현을 제대로 안썼다..
    • 작동은 하는데, 제대로 표기를 하자!
    		float number1 = 0f;
        float number2 = 0f;
    
  • float number1 = 0; float number2 = 0;

오늘의 회고

느낀 점 및 배운점

  • 부동의 소수점이라는 단어가 전부터 왜 하필 부동이라는 단어를 사용할까 궁금했는데, 부동이라는 뜻이 부동인구를 생각하면 정해져 있지 않고 대략적으로 이동인구를 파악하는 부분을 생각하면 될거 같아 왜 단어를 그렇게 사용했는지 알게 된 거 같다.
  • 수의 범위를 계속 보면서 암기!!

개선 점 및 나아가야할 점

  • 그 전에 궁금해도 배울 양이 너무 많아서 왜? 라는 질문을 해도 찾아보고 이게 왜 이렇게 되는지 이해하는 시간이 부족했기 때문에 복습 차원에서 선택한 부분이 꼬리에 꼬리를 물고 공부를 하게 되는거 같다.
  • 맥북도 연습을 따로 하고 있긴 한데, 환경변수 될때까지 해보기로!! 내일 안에 환경변수 성공하면 주말에 맥북으로 복습을 한 번 더 할 수 있을 거 같다!
  • 0과 0f 의 차이점에 대해 읽고 있는데, 정리는 내일 할 수 있을 거 같다! '0'과 '0f'는 '0'이 정수 리터럴이고 '0f'가 부동 소수점 리터럴 c#이 똑똑해서 0을 알아서 0f로 바꾸기 때문에 차이가 없다고 한다…
728x90
반응형
LIST