>백엔드 개발 >C++ >Double 변수에 저장할 때 C의 정수 나누기가 0이 되는 이유는 무엇입니까?

Double 변수에 저장할 때 C의 정수 나누기가 0이 되는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-03 11:35:10999검색

Why Does Integer Division in C   Result in Zero When Stored in a Double Variable?

정수 나누기가 이중 변수에서 놀라운 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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