long을 int로 변환할 때 잘림 오류 방지
Java에서 long 값을 int로 변환할 때 변환이 제대로 이루어지도록 하는 것이 중요합니다. 정보의 손실로 이어지지 않습니다. 이를 달성하는 한 가지 방법은 주어진 구현에서 설명한 대로 명시적 검사를 이용하는 것입니다.
<code class="java">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; }</code>
그러나 Java 8부터는 보다 관용적인 솔루션이 도입되었습니다.
수학 .toIntExact()
이 메서드를 사용하면 오버플로가 발생할 때 ArithmeticException을 발생시켜 long에서 int로 안전하게 변환할 수 있습니다.
<code class="java">import java.lang.Math; ... long foo = 10L; int bar = Math.toIntExact(foo);</code>
Java 8에는 유사한 "정확한" 메서드도 포함되어 있습니다. 다양한 산술 연산을 위해 정확성을 보장하고 예상치 못한 정밀도 손실 방지:
이러한 방법을 활용하여 개발자는 자신있게 long 형을 캐스팅할 수 있습니다. 오버플로로 인한 데이터 손실이나 런타임 예외 위험 없이 int 값을 반환합니다.
위 내용은 Java에서 long을 int로 안전하게 변환하는 방법: `toIntExact`와 명시적 검사?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!