자바에서 안전하게 long을 int로 형변환하는 방법이 뭔가요?

조회수 11070회

long에서 int로 형변환할때 데이터 손실없이 하는 가장 좋은 방법이 뭔가요?

public static int safeLongToInt(long l) {
    int i = (int)l;
    if ((long)i != l) {
        throw new IllegalArgumentException(l + " cannot be cast to int without changing its value.");
    }
    return i;
}

이건 제가 구현해본것입니다.

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    Java 8에서 새로운 메소드가 추가됐는데요.

    import static java.lang.Math.toIntExact;
    
    long foo = 10L;
    int bar = toIntExact(foo);
    

    오버플로우가 나면 ArithmeticException라는 에러를 던집니다. Java8에서 이런 오버플로우에 안전한 메소드가 추가되었는데 다 끝에 exact로 끝납니다.

    • Math.incrementExact(long)
    • Math.subtractExact(long, long)
    • Math.decrementExact(long)
    • Math.negateExact(long),
    • Math.subtractExact(int, int) 이렇게요.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)