4.4 실수 타입
소수점이 있는 숫자(3.14, -0.5)를 저장할 때 사용하는 타입입니다. “부동 소수점(Floating Point)” 방식이라서 실수 타입이라고 부릅니다.
1. 실수 타입 2총사 📏
1) 크기 및 정밀도 비교
실수는 얼마나 큰 수를 저장하느냐보다, 얼마나 정밀하게(소수점 몇 째 자리까지) 저장하느냐가 중요합니다.
| 타입 | 메모리 크기 | 정밀도 (유효 자릿수) | 비유 (측정 도구) | 설명 |
|---|---|---|---|---|
float |
4 byte | 7자리 | 학교 자 (mm 단위) | 가볍지만 정밀도가 낮음 |
double |
8 byte | 15자리 | 버니어 캘리퍼스 (0.01mm 단위) | 기본 실수 타입, 매우 정밀함 |
2) 정밀도 시각화
graph TD
Float[float (소수점 7자리)<br>0.1234567]
Double[double (소수점 15자리)<br>0.123456789012345]
style Float fill:#eee,stroke:#333
style Double fill:#9cf,stroke:#333,stroke-width:2px
2. 기본 타입: double
1) 개념
자바에서 실수의 기본 타입입니다.
float보다 2배(Double) 더 정밀하다고 해서 이름이 double입니다.
2) 왜 double을 쓰나요?
- 현대의 컴퓨터는 메모리가 충분하기 때문에, 정확도가 떨어지는
float를 굳이 쓸 이유가 없습니다. - 과학 계산, 금융 계산 등에서 오차를 줄이기 위해
double을 사용합니다.
double pi = 3.1415926535;
double height = 175.5;
3. 가벼운 타입: float
1) 개념
메모리를 적게 차지하지만 정밀도가 낮습니다.
값 뒤에 f 또는 F를 붙여서 “이건 float야!”라고 알려줘야 합니다. (안 붙이면 에러가 납니다. 자바는 실수를 무조건 double로 인식하기 때문입니다.)
float weight = 65.5f; // f를 꼭 붙여야 함!
4. 정밀도 차이 실습 🔬
같은 숫자를 저장해도 float는 뒤쪽 숫자가 잘리거나 부정확하게 바뀔 수 있습니다.
float f = 0.1234567890123456789f;
double d = 0.1234567890123456789;
System.out.println(f); // 0.12345679 (뒤가 짤리고 반올림됨 - 부정확)
System.out.println(d); // 0.12345678901234568 (훨씬 더 많이 저장됨 - 정확)
핵심: 소수점이 나오면 고민하지 말고
double을 쓰세요.
서브목차