집 >데이터 베이스 >MySQL 튜토리얼 >MySQL 부동 소수점 비교가 부정확한 이유는 무엇입니까?
MySQL 부동 소수점 비교 문제
부동 소수점 숫자는 본질적으로 부정확하기 때문에 MySQL의 부동 소수점 비교 문제에 직면하고 있습니다. 바이너리로 표현되는 방식입니다. 이로 인해 같아야 하는 값을 비교할 때 예상치 못한 결과가 발생할 수 있습니다.
다음 예를 고려하세요.
SELECT COUNT(*) FROM `users` WHERE `points` > "12.75"
포인트가 있는 두 행이 있으므로 이 쿼리는 2를 반환할 것으로 예상할 수 있습니다. 12.75보다 큽니다. 그러나 부동 소수점 숫자는 제한된 수의 비트로 표현되어 반올림 오류가 발생하기 때문에 3을 반환합니다.
전문가들은 재무 계산 및 기타 응용 프로그램에서 FLOAT 또는 DOUBLE 대신 DECIMAL 데이터 유형을 사용할 것을 권장합니다. 정확성이 중요합니다. DECIMAL은 값을 고정 소수점 숫자로 저장하여 부동 소수점 숫자에서 발생할 수 있는 반올림 오류를 제거합니다.
설명을 위해 포인트 열을 FLOAT에서 DECIMAL로 변환해 보겠습니다.
ALTER TABLE `users` MODIFY COLUMN `points` DECIMAL(6,2)
이제 쿼리를 다시 실행하면 2라는 예상 결과가 나옵니다.
위 내용은 MySQL 부동 소수점 비교가 부정확한 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!