집 >데이터 베이스 >MySQL 튜토리얼 >정수 나누기가 10진수 값 대신 0을 반환하는 이유는 무엇입니까?
정수 나눗셈과 예상치 못한 0 결과
예제 코드는 10진수 값(0.073667712)이 예상되는 나누기 연산에서 0의 결과를 생성합니다. 이는 변수가 기본적으로 정수로 처리되기 때문입니다. 많은 프로그래밍 언어의 정수 나누기는 결과의 소수 부분을 잘라내고(폐기하여) 정수 부분만 남깁니다. 따라서 47을 638로 나누면 0이 됩니다.
해결책: 부동 소수점 데이터 유형 사용
올바른 소수점 결과를 얻으려면 부동 소수점 숫자(예: 프로그래밍 언어에 따라 float
또는 double
)를 사용해야 합니다. 이는 두 가지 방법으로 달성할 수 있습니다:
변수를 부동 소수점으로 선언: 처음부터 @set1
및 @set2
을 부동 소수점 데이터 유형으로 정의합니다. 구체적인 구문은 프로그래밍 언어에 따라 다릅니다.
유형 캐스팅: 유형 캐스팅 함수(예: SQL의 CAST
또는 다른 언어의 유사한 함수)를 사용하여 나누기를 수행하기 전에 정수 변수를 부동 소수점으로 명시적으로 변환합니다. 예를 들면 다음과 같습니다.
<code class="language-sql">SET @weight = CAST(@set1 AS float) / CAST(@set2 AS float);</code>
이렇게 하면 부동 소수점 숫자에 대한 나누기가 수행되어 소수 부분이 보존되고 대략 0.073667712라는 예상 결과가 산출됩니다.
위 내용은 정수 나누기가 10진수 값 대신 0을 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!