정수 나누기가 이중 변수에서 놀라운 0을 산출합니다
단순 나누기(3/5)를 계산하려고 하면 예상치 못한 결과가 발생할 수 있습니다. . 결과를 배정밀도 변수에 저장하더라도 결과가 비정상적으로 0으로 표시될 수 있습니다. 이 수수께끼를 풀기 위해 기본 메커니즘을 조사해 보겠습니다.
제공된 코드 조각에서 피제수(3)와 제수(5)는 모두 정수입니다. 기본적으로 C는 이 나누기를 정수 나누기로 해석하여 결과를 반올림하고 소수 부분을 버립니다. 이 경우 정수 나누기에서 예상되는 대로 3을 5로 나누면 0이 나옵니다.
이 문제를 해결하고 원하는 부동 소수점 나누기를 얻으려면 피연산자 중 하나 이상이 다음과 같이 표시되는지 확인해야 합니다. 실수. 이는 제수 또는 피제수에 ".0"을 추가하여 달성할 수 있습니다.
double f = 3.0 / 5; // Explicitly making the dividend a real number // or double f = 3 / 5.0; // Explicitly making the divisor a real number
피연산자 중 하나를 실수로 변환하여 컴파일러가 부동 소수점 나누기를 수행하도록 합니다. 이렇게 하면 분수 부분이 보존되고 올바른 결과(이 경우 0.6)가 f 변수에 저장됩니다.
위 내용은 Double 변수에 저장할 때 C의 정수 나누기가 0이 되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!