[자바/JAVA] double을 int로 변환하는 방법 | 캐스팅, Math.round 차이

2026. 9. 23. 10:22·개발지식/Java
반응형

개발하다 보면 double 값을 int로 바꿔야 하는 경우가 있다.

처음에는 그냥 형변환하면 되는 줄 알았는데
소수점을 버릴지, 반올림할지에 따라 사용하는 방법이 달라진다.

간단하게 정리해봤다.


1. 캐스팅으로 double → int 변환

가장 간단한 방법은 (int)로 형변환하는 것이다.

double value = 10.8;

int result = (int) value;

System.out.println(result);
 

결과

double → int 변환
 

(int)로 변환하면
소수점 아래 값은 그냥 버려진다.

즉,

10.8 → 10
10.1 → 10
10.9 → 10
 

처럼 처리된다.

반올림이 아니라는 점만 주의하면 된다.


2. Math.round()로 반올림하기

소수점을 반올림해서 int로 변환하고 싶다면
Math.round()를 사용할 수 있다.

double value = 10.8;

int result = (int) Math.round(value);

System.out.println(result);
 

결과

Math.round()로 반올림
 

Math.round()는 소수점을 기준으로 반올림한다.

10.4 → 10
10.5 → 11
10.8 → 11
 

다만 double 값을 Math.round()에 넣으면 반환형은 long이기 때문에
최종적으로 int가 필요하다면 다시 캐스팅해줘야 한다.

int result = (int) Math.round(value);

3. Math.floor()로 내림하기

소수점을 내림 처리하고 싶다면 Math.floor()를 사용할 수 있다.

double value = 10.8;

double result = Math.floor(value);

System.out.println(result);
 

결과

Math.floor()로 내림
 

Math.floor()는 결과를 double로 반환한다.

int로 사용하려면 아래처럼 변환하면 된다.

int result = (int) Math.floor(value);
 

결과

10

4. Math.ceil()로 올림하기

반대로 소수점이 있으면 올림하고 싶다면
Math.ceil()을 사용한다.

double value = 10.1;

int result = (int) Math.ceil(value);

System.out.println(result);
 

결과

Math.ceil()로 올림

 


한눈에 비교

10.8을 기준으로 보면 아래와 같다.

방법 결과 특징
(int) value 10 소수점 버림
Math.round(value) 11 반올림
Math.floor(value) 10 내림
Math.ceil(value) 11 올림

실제로 사용할 때

예를 들어 포인트 값이 double로 되어 있는데
저장할 값은 int라면 아래처럼 사용할 수 있다.

double rewardValue = 100.0;

int rewardPoint = (int) rewardValue;
 

소수점이 항상 필요 없는 값이라면
단순 캐스팅으로 처리해도 된다.

반대로

double rewardValue = 100.6;
 

처럼 소수점이 존재할 수 있고
반올림해서 저장해야 한다면

int rewardPoint = (int) Math.round(rewardValue);
 

처럼 처리하면 된다.

결국 중요한 건

double을 int로 바꿀 때 소수점을 어떻게 처리할지 먼저 정하는 것이다.


주의할 점

단순 캐스팅은 반올림이 아니다.

double value = 99.9;

int result = (int) value;
 

결과는

99
 

가 된다.

100이 필요하다면

(int) Math.round(value)
 

를 사용해야 한다.

그리고 값이 int 범위를 넘어갈 가능성이 있다면
단순 캐스팅 전에 값의 범위도 확인하는 게 좋다.


정리

double을 int로 변환하는 방법은 간단하다.

소수점을 그냥 버리고 싶다면

(int) value
 

반올림하고 싶다면

(int) Math.round(value)
 

내림은

(int) Math.floor(value)
 

올림은

(int) Math.ceil(value)
 

를 사용하면 된다.

반응형

'개발지식 > Java' 카테고리의 다른 글

[자바/JAVA] 정적 바인딩 VS 동적 바인딩 (의의, 장/단점)  (0) 2023.09.05
[자바/JAVA] 추상 클래스 VS 인터페이스 (특징, 사용하는 이유, 차이점)  (0) 2023.09.01
[자바/JAVA] final 의미와 사용법  (0) 2023.08.30
[자바/JAVA] 변수의 선언 위치 (클래스 변수, 인스턴스 변수, 지역 변수)  (0) 2023.08.30
[자바/JAVA] 오버로딩(Overloading) VS 오버라이딩(Overriding)  (0) 2023.08.29
'개발지식/Java' 카테고리의 다른 글
  • [자바/JAVA] 정적 바인딩 VS 동적 바인딩 (의의, 장/단점)
  • [자바/JAVA] 추상 클래스 VS 인터페이스 (특징, 사용하는 이유, 차이점)
  • [자바/JAVA] final 의미와 사용법
  • [자바/JAVA] 변수의 선언 위치 (클래스 변수, 인스턴스 변수, 지역 변수)
견코
견코
개발로 코딩하기 프로젝트
  • 견코
    개발로 코딩하기
    견코
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • 앱개발
      • 개발지식 N
        • Java N
        • Spring
        • Vue
        • CS
        • DB N
        • Next.js
      • 잡동사니
        • 개요
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    mariadb설치
    doubleint변환
    날짜조건
    데이터베이스
    MariaDBServer
    MariaDB날짜조회
    Math.ceil
    로컬db
    MariaDB연결
    DB설치
    localhost
    디비버
    마리아DB
    CURDATE
    Math.floor
    자바형변환
    오늘날짜조회
    dbeaver
    DBeaverMariaDB
    mariaDB
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
견코
[자바/JAVA] double을 int로 변환하는 방법 | 캐스팅, Math.round 차이
상단으로

티스토리툴바