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을 쓰세요.

서브목차