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

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) 이렇게요.

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.