Int Division: 1/3 == 0 뒤에 숨은 진실 공개
Java의 정수 나누기는 특히 다음과 같은 경우 당황스러운 개념이 될 수 있습니다. 소수 값을 포함합니다. 당면한 질문은 0.333이 될 것으로 예상함에도 불구하고 1/3의 결과가 0인 이유입니다...
산술 공개
이 특히 이 경우 피연산자(1과 3)은 모두 정수입니다. 즉, 정수 연산이 기본적으로 사용됩니다. 결과 변수(g)를 double로 선언했음에도 불구하고 나누기 후에 암시적 변환이 발생합니다.
정수 나누기의 복잡성
부동이 아닌 정수 나누기- 포인트 분할, 결과를 0으로 반올림합니다. 나눗셈의 실제 결과인 0.333...은 결과적으로 0으로 내림됩니다. 프로세서는 기본적으로 소수 부분이 없는 것처럼 처리합니다.
부동 소수점 산술: 다른 이야기
두 피연산자가 모두 부동 소수점 숫자(3.0 및 1.0)로 제공되는 경우 부동 소수점 산술이 우선합니다. 결과적으로 예상 분수 값은 0.333입니다.... 첫 번째 피연산자만 부동 소수점(예: 3.0 및 1)인 경우에도 부동 소수점 산술은 계속 사용됩니다.
실용적 해결 방법
십진수 결과를 얻으려면 명시적으로 부동 소수점 나눗셈을 수행해야 합니다. 이는 두 피연산자를 double 또는 float로 캐스팅하여 수행할 수 있습니다.
public static void main(String[] args) { double g = (double) 1 / 3; // Explicitly cast to double System.out.printf("%.2f", g); }
또는 더 정확한 숫자 연산을 위해 BigDecimal 클래스를 사용할 수 있습니다.
위 내용은 Java 정수 나눗셈에서 1/3이 0인 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!