집 >데이터 베이스 >MySQL 튜토리얼 >정수 나누기가 소수 값 대신 0을 산출하는 이유는 무엇입니까?
정수 나눗셈에서 예상치 못한 0 결과
최근 프로그래밍 프로젝트 중에 다음 코드에서 예상치 못한 결과가 발생했습니다.
<code>PRINT @set1 PRINT @set2 SET @weight= @set1 / @set2; PRINT @weight</code>
나눗셈 결과 예상된 0.073667712 대신 0이 나왔습니다.
근본 원인: 정수 데이터 유형
문제는 @set1
및 @set2
의 데이터 유형에서 발생합니다. 둘 다 정수이므로 정수만 저장할 수 있습니다. 정수 나누기는 항상 소수 부분을 잘라내어 결과적으로 정수가 됩니다. 따라서 47을 638로 나누면 0이 됩니다.
솔루션
올바른 소수점 결과를 얻으려면 두 가지 접근 방식을 사용할 수 있습니다.
변수를 부동 소수점으로 정의: @set1
및 @set2
을 부동 소수점 숫자(부동 소수점)로 선언합니다. 이를 통해 변수가 소수 값을 유지하여 정확한 소수 구분이 보장됩니다.
계산 중 유형 캐스팅: 변수 데이터 유형을 변경할 수 없는 경우 CAST
연산자를 사용하여 나누는 동안 임시로 정수를 부동 소수점으로 변환합니다.
<code>SET @weight= CAST(@set1 AS float) / CAST(@set2 AS float);</code>
두 가지 방법 중 어느 쪽이든 나누기 연산이 예상되는 십진수 값을 반환하도록 보장하여 예상치 못한 0 결과 문제를 해결합니다.
위 내용은 정수 나누기가 소수 값 대신 0을 산출하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!