>데이터 베이스 >MySQL 튜토리얼 >정수 나누기가 소수 값 대신 0을 산출하는 이유는 무엇입니까?

정수 나누기가 소수 값 대신 0을 산출하는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2025-01-20 17:31:12280검색

Why Does Integer Division Yield Zero Instead of a Decimal Value?

정수 나눗셈에서 예상치 못한 0 결과

최근 프로그래밍 프로젝트 중에 다음 코드에서 예상치 못한 결과가 발생했습니다.

<code>PRINT @set1
PRINT @set2

SET @weight= @set1 / @set2;
PRINT @weight</code>

나눗셈 결과 예상된 0.073667712 대신 0이 나왔습니다.

근본 원인: 정수 데이터 유형

문제는 @set1@set2의 데이터 유형에서 발생합니다. 둘 다 정수이므로 정수만 저장할 수 있습니다. 정수 나누기는 항상 소수 부분을 잘라내어 결과적으로 정수가 됩니다. 따라서 47을 638로 나누면 0이 됩니다.

솔루션

올바른 소수점 결과를 얻으려면 두 가지 접근 방식을 사용할 수 있습니다.

  1. 변수를 부동 소수점으로 정의: @set1@set2을 부동 소수점 숫자(부동 소수점)로 선언합니다. 이를 통해 변수가 소수 값을 유지하여 정확한 소수 구분이 보장됩니다.

  2. 계산 중 유형 캐스팅: 변수 데이터 유형을 변경할 수 없는 경우 CAST 연산자를 사용하여 나누는 동안 임시로 정수를 부동 소수점으로 변환합니다.

<code>SET @weight= CAST(@set1 AS float) / CAST(@set2 AS float);</code>

두 가지 방법 중 어느 쪽이든 나누기 연산이 예상되는 십진수 값을 반환하도록 보장하여 예상치 못한 0 결과 문제를 해결합니다.

위 내용은 정수 나누기가 소수 값 대신 0을 산출하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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