부동 소수점 나눗셈 이상: 배정밀도에서 (3/5)가 0을 산출하는 이유는 무엇입니까?
부동 소수점에서 산술 연산을 수행할 때 숫자 때문에 프로그래머는 종종 놀라운 결과에 직면합니다. 이러한 예외 중 하나는 나누기 연산자(/)에서 발생합니다. 숫자를 배정밀도 부동 소수점 값으로 저장함에도 불구하고 (3/5)와 같은 간단한 나눗셈으로 인해 예상치 못한 0이 출력될 수 있습니다.
이 동작은 3과 5가 모두 정수라는 사실에서 비롯됩니다. 기본적으로 C . 산술 표현식에 정수가 사용되는 경우 나누기 연산자는 정수 나누기를 수행하여 결과의 소수 부분을 버립니다.
나누기 연산 수정
올바른 부동 소수점 나누기 결과를 얻으려면 최소한 하나의 피연산자가 부동 소수점 값인지 확인해야 합니다. 이는 정수 중 하나를 배정밀도 부동 소수점 숫자로 변환하여 달성할 수 있습니다. 예를 들어 다음 코드를 사용할 수 있습니다.
double f = 3.0 / 5;
이 경우 3.0은 배정밀도 부동 소수점 숫자이므로 컴파일러가 소수 부분을 유지하는 부동 소수점 나누기를 수행합니다.
피연산자 중 하나를 부동 소수점 값으로 변환하면 나누기 연산자가 이제 예상 결과(이 경우 0.6)를 생성합니다. 이 기술을 사용하면 프로그래머는 부동 소수점 숫자에 대한 산술 연산을 올바르게 수행하고 예상치 못한 0 출력을 방지할 수 있습니다.
위 내용은 3을 5로 두 배로 나눌 때 C의 정수 나누기가 0이 되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!