alswp0216   2년 전

코딩을 막 배우기 시작한 코린이입니다.
평균을 구하기 전 int형으로 계산하다 총합을 구할 때만 double형을 사용했는데 계산에 실패하네요
처음부터 double형을 사용하면 계산이 잘 되는데 int형을 사용하면 안 되는 이유가 있을까요?ㅠㅠ 아무리 검색해도 안 나오네요ㅠㅠ

gdg713er   2년 전

기본적으로 int와 double은 숫자를 저장할 수 있지만, 데이터타입이 다릅니다.

같은 데이터타입일 경우, 연산에 오류가 생길 수 없으나

다른 데이터타입끼리 연산을 하는 건 오류를 유발할 수 있기에, 연산에 쓰이는 데이터타입은 항상 똑같아야 합니다.

간단한 예시를 들면,

[int a = 1]

a = a/5; -> a에는 0 이 저장된다.

a = a * 10; 일 경우, a = 0입니다.

a / 5 는 0이하의 수가 나와야하지만,  int 타입은 소수점 밑의 수를 전부 버리기 때문에 a/5 하는 순간 0이 됩니다.


[double a = 5.0]

a = a/5; -> a에는 0.2가 저장된다.

a = a * 10; -> a는 2가 된다.

연산시 중요한 포인트입니다.

gdg713er   2년 전

더 자세하게 설명드리면, 

double a = 1;

a = a / 5; 를 한다고 가정할 때,

위의 식을 데이터 타입으로 나누면

(double)a = (double)a / (int)5; 로 구별 됩니다.

기본적으로 double과 int 와 같은 서로 다른 데이터타입으로 연산하게 되면, (int)5 같은 경우에 더 큰 메모리를 가지는 double형으로 변환되어 연산이 됩니다.

즉, 위의 식을 연산하면 double = double의 형태이기 때문에 연산이 가능하고, 자세하게 표현하고 싶으면 a = a / 5.0; 으로 하시면 됩니다.

int a = 1;

a = a / 5; 일 경우,

(int)a = (int)a / (int)5 이기 때문에, 나누게 되면 소수이하라 자동으로 double형식으로 연산이 되나, 결국 int에 저장되기 때문에 소수점 이하의 수는 버리게 됩니다.

댓글을 작성하려면 로그인해야 합니다.