정수형 자료형과 실수형 자료형을 처리하는 데이터 방식은 완전 다르다.
● 정수형 데이터 표현 방식 : 비트, 한정적인 공간 안에서 2진수로 표현
(표현할 수 있는 경우의 수가 한정적, 숫자의 표현 범위↓)
● 실수형 데이터 표현 방식 : 비트값을 고정하기 어려울 수 있고, 모두 배치시키기 어렵다. → "복동 소수점 방식" 이용
즉 메모리를 다루는 방식 자체가 다르다. (3과 3.0은 완전 다름)
int a = 3 + 3.0;
정수 방식 vs 실수 방식 결정해야함. 그러나 a가 정수이기때문에 3.0을 형변환 한다.
따라서 명시적으로 적어주는 것이 좋고, 실수와 정수를 혼용에서 쓰는 경우는 의도한 것이 아니라면 피하자.
int a = 3 + (int)3.0;
float vs double
float는 4byte의 크기를 갖는 반면에 double은 8byte의 크기를 갖는다.
double은 표현할 수 있는 값의 범위가 넓으므로 미세한 소수점까지 표현이 가능하다. (float보다 메모리 공간이 2배 늘어남)
※ 실수는 정밀하게 표현되는 값이 아니다.
아주 근사한 값까지는 표현할 수 있겠지만, 정확한 값을 표현하기에는 어려울 수 있다.
또한 소수점 자리가 길어질수록 가수 부분이 늘어난다.
정리하면,
1) 정수 표현 방식과 실수 표현 방식은 다르다.
2) 실수 표현 방식은 정밀도에 의존한다.
3) 따라서 double(8) 자료형이 float(4)보다 더 아래의 소수점까지 정확하게 표현이 가능하다.
4) 정수는 정수끼리, 실수는 실수끼리 연산하되, 혼용해서 연산할 경우 명시적으로 변환해주자.