2013-07-08 2 views
1

나는 "url_key_weight"테이블에 float 데이터 형식의 필드가 있습니다. 한 레코드에서 나는 float 필드에 2.95의 값을 가지고 있습니다. PHP 코드에서 검색하여 인쇄하면 2.9500000476837이 인쇄됩니다. 나는 PHP표에서 float 값 가져 오기

"SELECT * FROM url_key_weight WHERE bid = 2.95" 

또는

"SELECT * FROM url_key_weight WHERE bid = 2.9500000476837" 

에서 다음 querys를 실행할 때 는하지만 난 아무것도 얻을 수 없다.

+0

@fancyPants url_key_weight는 테이블 이름이고 bid는 열 이름입니다. 예 입찰가가 부동입니다. –

+0

숫자를 따옴표 '2.95'로 묶고 무슨 일이 일어나는 지보십시오. 필드 유형이 float로 정의되어 있습니까? varchar 아마 그것을 할 더 나은 방법이 될까요? –

+1

http://stackoverflow.com/questions/2567434/mysql-floating-point-comparison-issues – golimar

답변

1

을 시도하면

SELECT * FROM url_key_weight WHERE ROUND(bid, 2) = 2.95 

here 대해 자세히 알아 반올림해야 할 것 비교합니다.

+0

그럼요? 저 행을 갖고 싶니? 아니면 원하지 않지만이 행을 반환합니까? – fancyPants

+0

또한 올바른 값을 갖는 것이 중요하다면 float 대신 decimal 데이터 유형을 사용해야합니다. – fancyPants

+0

알겠습니다. 감사. –

0
it is not generally a good idea to compare floating point numbers with = equals operator. 

직접하려면이

"SELECT * FROM url_key_weight WHERE bid >= 2.95" 
+0

하지만 입찰가에 2.96의 또 다른 값이 있습니다. –