Float를 비교할 때 MySQL SELECT 쿼리가 실패하지만 비교를 제거하면 작동하는 이유는 무엇입니까?

Patricia Arquette
풀어 주다: 2024-10-28 16:29:29
원래의
449명이 탐색했습니다.

Why Does My MySQL SELECT Query Fail When Comparing Floats, But Works When I Remove the Comparison?

MySQL SELECT 쿼리에서 부동 소수점 비교 문제 해결

MySQL SELECT 쿼리에서는 부동 소수점 값을 비교할 때 정밀도 문제가 발생할 수 있습니다. 이 문제를 해결하려면 다음 질문을 살펴보겠습니다.

질문:

왜 부동 소수점 동등 비교를 사용하는 SELECT 쿼리가 실패하는 반면, 비교를 제거하면 올바른 결과가 반환됩니까? 열? 성공적인 일치를 위해 연산 전에 부동 소수점을 어떻게 2자리로 변환할 수 있습니까?

답변:

문제는 MySQL 고유의 부동 소수점 정밀도에서 비롯됩니다. 이 문제를 해결하기 위해 float 열을 10진수 유형으로 변환하면 특정 자릿수의 정밀도를 보장할 수 있습니다.

해결책:

다음 쿼리는 성공적으로 일치합니다. float 값을 십진수로 변환:

SELECT * FROM `table` WHERE CAST(`price` AS DECIMAL) = CAST(101.31 AS DECIMAL);
로그인 후 복사

대체 해결 방법:

또는 가격 열을 DECIMAL로 변경하는 것이 더 적합합니다. 금전적 가치를 처리하고 더 정밀한 제어를 제공합니다.

위 내용은 Float를 비교할 때 MySQL SELECT 쿼리가 실패하지만 비교를 제거하면 작동하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!