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 중국어 웹사이트의 기타 관련 기사를 참조하세요!