>  기사  >  Java  >  600851475143을 사용할 때 Java 코드에서 '정수 수가 너무 큼' 오류가 발생하는 이유는 무엇입니까?

600851475143을 사용할 때 Java 코드에서 '정수 수가 너무 큼' 오류가 발생하는 이유는 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-07 18:30:03485검색

Why Does My Java Code Throw an

600851475143에 대한 "정수 수가 너무 큼" 오류 문제 해결

다음 코드 조각을 고려하십시오.

public class Three {
    public static void main(String[] args) {
        Three obj = new Three();
        obj.function(600851475143);
    }

    private Long function(long i) {
        Stack<Long> stack = new Stack<>();

        for (long j = 2; j <= i; j++) {
            if (i % j == 0) {
                stack.push(j);
            }
        }
        return stack.pop();
    }
}

이 코드는 함수에 전달된 리터럴 600851475143으로 실행되며 "정수 수가 너무 큼" 오류가 발생합니다. 그 이유를 이해하려면 관련된 데이터 유형을 자세히 살펴볼 필요가 있습니다.

Java에는 객체 없이 숫자를 나타내는 int 및 long과 같은 기본 데이터 유형이 있습니다.

  • int는 32비트 부호 있는 정수입니다. 즉, -2,147,483,648에서 2,147,483,647 사이의 정수를 나타낼 수 있습니다.
  • long은 64비트 부호 있는 정수입니다. -9,223,372,036,854,775,808에서 9,223,372,036,854,775,807까지의 값 범위가 더 넓습니다.

여기서 문제는 600851475143이 int로 표현할 수 있는 최대값을 초과한다는 것입니다. 이 문제를 해결하려면 숫자에 "L" 접미사를 추가하여 long 유형의 리터럴을 사용해야 합니다: 600851475143L.

obj.function(600851475143L);

이 수정을 사용하면 코드가 오류 없이 실행되고 반환됩니다. 600851475143L의 가장 큰 소인수입니다.

위 내용은 600851475143을 사용할 때 Java 코드에서 '정수 수가 너무 큼' 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.