[Java] 실수를 나타내는 Double, double, float, decimal 의 차이

2025. 10. 13. 10:09·Java

자바에서 실수를 표현하는 기본적인 방법은 원시 타입인 `float`와 `double` 두 가지이다. 

 

1) float vs. double 

`float` 

  • 크기 : 4 Byte
  • 정밀도 : 소수점 이하 약 7자리 
  • 표현 범위 : 비교적 좁음 
  • 사용 : 메모리 절약이 중요하거나 정밀도가 크게 필요하지 않을 때 
  • 주의 : `float` 리터럴 숫자 뒤엔 `f` 또는 `F`를 붙여야 한다. 

`double` 

  • 크기 : 8 Byte
  • 정밀도 : 소수점 이하 약 15자리 
  • 표현 범위 : 매우 넓음 
  • 사용 : 자바에서 실수를 다루는 기본 타입이나. 특별한 이유가 없다면 `double`을 사용한다. 
  • 주의 : 실수 리터럴은 기본적으로 `double`로 간주한다. 

2) double vs. Double 

이 둘은 같은 값을 다루지만, 메모리 위치와 특징이 근본적으로 다르다. 

특징 double Double
타입 원시 타입  참조 타입
메모리 스택 영역에 값 저장 스택에 주소, 힙에 객체 저장
NULL 허용 불가능 가능 
용도  단순 연산, 성능 중시 컬렉션 저장, 제네릭 타입, 객체 지향 메서드 사용
Double은 객체이므로 ArrayList<Double> 처럼 컬렉션에 넣거나, null 처리가 필요할 때 사용한다. 단순 연산에서는 성능이 더 좋은 double을 사용한다. 

3) Java의 Decimal 연산 

일반적인 부동 소수점 (float, double) 연산은 정밀한 계산에 적합하지 않다. 

-> 자바의 정밀 연산 타입 : `BigDecimal` 

  • 자바에서는 decimal이라는 원시 타입이 없으며, `java.math.BigDecimal` 클래스를 사용하여 오차 없이 정확한 10진수 연산을 수행한다. 
  • 사용 : 금융, 회계, 화폐 계산 등 정밀도가 100% 보장되어야 하는 모든 분야에서 사용된다. 
  • 주의 : `BigDecimal`은 객체이며, 일반적인 연산자(`+`, `-`, `*`, `/`) 가 아닌 클래스 메서드(`.add()`, `.substract()`)를 통해 연산해야 한다. 
  • 단점 : 일반 `double`보다 성능이 느리다. 

 

'Java' 카테고리의 다른 글

[Java] 자바 변수 4가지 정리 (전역, 지역, 정적, 멤버 변수)  (0) 2025.11.10
[Java] 원시타입(Primitive Type)과 참조타입(Reference Type)  (0) 2025.10.14
[Java] 스트림(Stream)에 대하여  (0) 2025.10.14
[Java] POJO(Plain Old Java Object)  (0) 2025.09.16
[Java] 객체지향설계의 5가지 원칙 (SOLID 원칙)  (2) 2025.08.03
'Java' 카테고리의 다른 글
  • [Java] 원시타입(Primitive Type)과 참조타입(Reference Type)
  • [Java] 스트림(Stream)에 대하여
  • [Java] POJO(Plain Old Java Object)
  • [Java] 객체지향설계의 5가지 원칙 (SOLID 원칙)
erika0915
erika0915
백엔드 개발자가 되고 싶어요 .
  • erika0915
    erikoding
    erika0915
  • 전체
    오늘
    어제
    • 분류 전체보기 (78)
      • 프로젝트 (13)
        • 끼니콩 (3)
        • 덕메랑 (3)
        • handDoc (7)
        • Haeil (0)
      • Java (9)
        • 클린코더스 (0)
      • Spring (30)
      • Redis (3)
      • CS (7)
        • 운영체제 (3)
        • 컴퓨터구조 (0)
        • 네트워크 (4)
      • DevOps (2)
      • 코딩테스트 (0)
      • Tech (14)
        • TDD (1)
        • 정리 (5)
        • 우테코 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    CoolSMS
    도커
    자바
    MongoDB
    coderabbit
    redis
    스프링
    깃
    네트워크
    Network
    스프링부트
    파인튜닝
    git
    운영체제
    jira
    지라
    STT
    Spring
    TDD
    springboot
    몽고디비
    java
    promtail
    OS
    깃허브
    docker
    레디스
    AI
    코드레빗
    github
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
erika0915
[Java] 실수를 나타내는 Double, double, float, decimal 의 차이

티스토리툴바