>백엔드 개발 >C++ >3을 5로 두 배로 나눌 때 C의 정수 나누기가 0이 되는 이유는 무엇입니까?

3을 5로 두 배로 나눌 때 C의 정수 나누기가 0이 되는 이유는 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-02 12:33:12437검색

Why Does Integer Division in C   Result in Zero When Dividing 3 by 5 as Doubles?

부동 소수점 나눗셈 이상: 배정밀도에서 (3/5)가 0을 산출하는 이유는 무엇입니까?

부동 소수점에서 산술 연산을 수행할 때 숫자 때문에 프로그래머는 종종 놀라운 결과에 직면합니다. 이러한 예외 중 하나는 나누기 연산자(/)에서 발생합니다. 숫자를 배정밀도 부동 소수점 값으로 저장함에도 불구하고 (3/5)와 같은 간단한 나눗셈으로 인해 예상치 못한 0이 출력될 수 있습니다.

이 동작은 3과 5가 모두 정수라는 사실에서 비롯됩니다. 기본적으로 C . 산술 표현식에 정수가 사용되는 경우 나누기 연산자는 정수 나누기를 수행하여 결과의 ​​소수 부분을 버립니다.

나누기 연산 수정

올바른 부동 소수점 나누기 결과를 얻으려면 최소한 하나의 피연산자가 부동 소수점 값인지 확인해야 합니다. 이는 정수 중 하나를 배정밀도 부동 소수점 숫자로 변환하여 달성할 수 있습니다. 예를 들어 다음 코드를 사용할 수 있습니다.

double f = 3.0 / 5;

이 경우 3.0은 배정밀도 부동 소수점 숫자이므로 컴파일러가 소수 부분을 유지하는 부동 소수점 나누기를 수행합니다.

피연산자 중 하나를 부동 소수점 값으로 변환하면 나누기 연산자가 이제 예상 결과(이 경우 0.6)를 생성합니다. 이 기술을 사용하면 프로그래머는 부동 소수점 숫자에 대한 산술 연산을 올바르게 수행하고 예상치 못한 0 출력을 방지할 수 있습니다.

위 내용은 3을 5로 두 배로 나눌 때 C의 정수 나누기가 0이 되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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