본문 바로가기
[ Program ]/c#스터디

7.변수,자료형 2(int와 float, double)

by 관이119 2021. 9. 20.





앞장에서 변수에 대해 설명했다.

변수는 프로그램 하는 동안 계속 쓰기 때문에 꼭 내용을 이해하고 있어야 한다.

 

 

그림1

 

그림1은 여러 자료 형을 나타내고 있는데 내가 100이란 숫자를 변수로 사용할때 보통은 byte 형을 사용하진 않는다.

앞장에서는 크기에 맞춰서 사용하라고 해놓고 여기서는 다른말하니 당황스러울수 있다.

여기는 몇가지 이유가 있다.

 

 

첫째로 PC의 자원이 넉넉해져서 여유롭게 사용할수 있기 때문이다.

( 자원은 PC의 램,CPU처리속도,하드용량등 사용가능한 모든것을 말한다. )

PC 는 계속 가파르게 발전하고 있는데 과거에 비해 하드용량이나 메모리용량등이 비교할수 없을만큼 올라갔다.

 

 

내가 최초로 사용하던 PC는 하드가 무려 21메가 였는데 그때는 그용량도 넉넉하다고 느꼈었다.

램은 정확히 기억나지 않지만 그에 비례할만큼 작았었을것이다.

그런시절에 프로그램을 하면 당연히 정말로 사용할만큼 최소한으로 여유공간을 잡고 했었어야 했다.

100이란 숫자를 사용하려면 딱 거기에 맞는 공간만 사용했었어야 했었던 것이다.

 

 

하지만 계속적으로 PC가 성장하며 그런정도로는 신경쓰지않아도 될정도가 되었다.

내가 출장인원이라는 변수를 지정하는데 지금은 출장인원이 7명이지만 내일 갑자기 3명이 출장을 더 올수도 있다.

그러면 7명에 딱맞춰서 만들어놓은 변수는 다시 다른형태로 변경해야 할것이고 변수를 사용한곳도 모두 체크해봐야 할 것이다.

그래서 적당히 모자라지 않고 넘치지않을정도의 변수를 일반적으로 사용하고 있다.

 

 

그런데 그렇게 자원이 넉넉하다면 전부 같은형식으로 제일큰형식으로 사용하면 되지않냐고 생각할 수도 있다.

예를 들어 내가 500평짜리 집을 살돈이 있다고 생각해보자.

그런데 그돈이 있다고 500평짜리 집을 살 사람은 없을것이다.

적당한 크기의 집을 사고 나머지돈은 여유돈으로 두고 사용하고 생활비로도 사용하고 비상용으로 남겨둘수도 있다.

PC의 자원도 마찬가지다.

여러 사람들이 적당한 형식으로 잡아서 해보니 모자라지 않고 적당히 사용할만하다고 느끼는 정도의 형식으로 사용한다.

 

 

둘째로 관습이다.

위에서 말한것과 비슷하지만 많은사람들이 그렇게 인지하고 사용하고 있는내용이라서 나만 이렇게 쓸거야 하고 다르게 사용해버리면 협업이 힘들어질수 있다.

당장협업은 어떻게 한다고 해도 내가 자주 사용하던 형태가 아닌형태로 다른사람들이 사용하고 있다면 다른사람의 소스분석등이 힘들어 질수 있다.

직설적으로 말하면 다들 그렇게 쓰고 있으니 그냥 따라써야한다.

 

 

위이유들로 사용하는 변수형식 들이 몇가지 있다.

int - 너무크지않은 정수에 사용

double - 소수점이 있는 숫자에 사용(float 을 사용하는경우도 있음)

decimal - 단위가 큰 정수에 사용(주로 돈관련 데이터) (long 을 사용하는경우도 있음)

 

 

int 는 그림1에서 보는바와 같이 100억단위의 숫자를 넣어버리면 overflow 가 발생한다.

그래서 주로 금액을 사용할때는 다른 큰타입의 형식을 사용한다.

위에서 overflow 란 말그대로 넘친다는 뜻인데 int 형식에 담을수 있는 최대값을 초과해서 프로그램을 정상적으로 빌드(=컴파일) 할수 없는 상태가 되어 아예 빌드하지않고 오류를 뿜어내는 것이다.

 

 

위에서 double 은 왜 더 작은 공간을 차지하는 float으로 사용하지 않냐 생각할수 있다.

이에대해서는 내용이 길어지는데 아래 경로의 내용을 읽어 보도록하자.

사실나도 정확히 모른다! 

간단히 말하면 PC가 소수점을 사용하면서 오류가 생길수 있는 여지가 있는데 그중 처리속도에 영향을 끼치지 않으면서 가장 오류가 생길 확률이 작은 형식이 double 이라서 double을 사용하는것이다.

 

codingdog.tistory.com/entry/%EB%B6%80%EB%8F%99-%EC%86%8C%EC%88%98%EC%A0%90-%EC%99%9C-01%EC%9D%84-%EC%A0%80%EC%9E%A5%ED%95%98%EB%A9%B4-%EC%98%A4%EC%B0%A8%EA%B0%80-%EC%83%9D%EA%B8%B8%EA%B9%8C%EC%9A%94codingdog.tistory.com/entry/%EB%B6%80%EB%8F%99-%EC%86%8C%EC%88%98%EC%A0%90-%EC%99%9C-01%EC%9D%84-%EC%A0%80%EC%9E%A5%ED%95%98%EB%A9%B4-%EC%98%A4%EC%B0%A8%EA%B0%80-%EC%83%9D%EA%B8%B8%EA%B9%8C%EC%9A%94

 

부동 소수점 : 왜 0.1을 저장하면 오차가 생길까요?

 부동 소수점은, 가수부와 지수부로 나누어서 저장을 합니다. 즉, (a)*2^b꼴로 저장을 하는데요. 이 때, a는 1보다 크거나 같고, 2보다 작은 실수입니다. 즉, (1.xxx)*2^b 꼴로 저장을 한다는 겁니다. 여

codingdog.tistory.com

 

www.acmicpc.net/blog/view/37

 

부동소숫점 오류

게시판에 올라오는 "이 코드는 왜 틀렸나요?" 류의 질문 중 부동소숫점 오류 때문에 틀리는 경우가 꽤 많이 보여서 간단하게 몇 가지 써봅니다. 0. 부동소숫점 오류 모든 실수를 8byte, 혹은 12~16byte

www.acmicpc.net

 

 

위의 그림1에 대해서 크기가 잘이해되지 않을 수 있는데 비트와 바이트에 대해서는 아래 글을 읽어 보길바란다.

 

mindnet.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-1%ED%8E%B8-Bit-%EC%99%80-Byte-%EC%B0%A8%EC%9D%B4%EC%A0%90

 

[ 네트워크 쉽게 이해하기 1편 ] Bit 와 Byte 차이점

우리가 컴퓨터를 사용하다보면 비트(bit) 와 바이트(Byte)라는 말은 한 번쯤은 들어 봤다면 이제 이 둘이 어떠한 차이점이 있는지도 알아봐야겠죠? 사람과 사람간에 의사소통을 하기 위한 언어(abcd

mindnet.tistory.com

 

 

그림2

 

위에서 배운 변수를 출력하는 프로그램을 만들어 볼건데 숫자변수를 지정하고 출력하려면 그림2와 같이 오류가 발생한다.

위소스는 앞장에서 충분히 연습해서 알수 있을거라고 생각한다.

study_person 이라는 이름을 가지고 int 형식인 변수에 5를 넣고 해당 변수의 값을 팝업창으로 띄울려고 했는데 위와같이 문제가 할생하며 빌드가 되지 않는다.

 

 

아직배우지 않았지만 형변환이라는 것을 해줘야 하는데 MessageBox.Show는 문자만 출력할수 있어서 발생하는 오류이다.

 

 

 

그림3

 

그림3에 있는 빨간부분의 study_person 뒤에 . 을 찍으면 여러 항목을 선택할수 있는 창이 뜨는데 그중 ToString을 선택하고 위와 같이 소스를 만들어 준다.

소스의 의미는 숫자인 study_person 을 글씨로 변환해서 창을 띄워라는 의미이다.

 

 

 

***숙제 : 그림3처럼 1개의 숫자형태 변수를 지정하고 출력하는 프로그램을 만들어보자. 실행화면과 소스 둘다 공유할것.

댓글