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

정수 나누기가 10진수 값 대신 0을 반환하는 이유는 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2025-01-20 17:25:10203검색

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

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

예제 코드는 10진수 값(0.073667712)이 예상되는 나누기 연산에서 0의 결과를 생성합니다. 이는 변수가 기본적으로 정수로 처리되기 때문입니다. 많은 프로그래밍 언어의 정수 나누기는 결과의 소수 부분을 잘라내고(폐기하여) 정수 부분만 남깁니다. 따라서 47을 638로 나누면 0이 됩니다.

해결책: 부동 소수점 데이터 유형 사용

올바른 소수점 결과를 얻으려면 부동 소수점 숫자(예: 프로그래밍 언어에 따라 float 또는 double)를 사용해야 합니다. 이는 두 가지 방법으로 달성할 수 있습니다:

  1. 변수를 부동 소수점으로 선언: 처음부터 @set1@set2을 부동 소수점 데이터 유형으로 정의합니다. 구체적인 구문은 프로그래밍 언어에 따라 다릅니다.

  2. 유형 캐스팅: 유형 캐스팅 함수(예: SQL의 CAST 또는 다른 언어의 유사한 함수)를 사용하여 나누기를 수행하기 전에 정수 변수를 부동 소수점으로 명시적으로 변환합니다. 예를 들면 다음과 같습니다.

<code class="language-sql">SET @weight = CAST(@set1 AS float) / CAST(@set2 AS float);</code>

이렇게 하면 부동 소수점 숫자에 대한 나누기가 수행되어 소수 부분이 보존되고 대략 0.073667712라는 예상 결과가 산출됩니다.

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

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