2013-06-06 5 views
0

MSSQL 데이터베이스에서 PDO를 사용하여 저장 프로 시저를 실행하고 있습니다. 모든 것은 PDOStatement::fetchAll()과 함께 하나의 작은 장애로부터 절대적으로 훌륭하게 작동합니다. 대신에 올바른 값과 소수점 장소를 반환하는 저장 프로 시저에서 수레를 반환 할 때, 그것은과 같이 별도의 소수점 이하 자릿수로 값을 반환 : 문제가 반올림하는 것처럼PDO FetchAll() 번호 반올림 문제

Database | Returned by PDO 
----------------------------------- 
614.9 | 614.89999999999998 
1.18  | 1.1799999999999999 

보인다 ... 어쨌든 숫자를 반올림하려는 이유를 이해하지 못합니다. 분명히 데이터베이스에서 값을 가져와야합니다.

이 내가 시도하십시오 DB에 저장 프로 시저를 실행

  1. 이 절대적으로 잘 작동, 따라서 확실히 PDO 함께 할 수있는 뭔가입니다.
  2. 스토어드 프로 시저 대신 일반 쿼리를 실행하면 여전히 동일한 결과가 생성됩니다.

분명히 나는 ​​숫자 나 자신을 포맷 할 수 있습니다,하지만 난 내가 데이터베이스에서 얻을 것은 데이터베이스에 정확히 있는지 확인해야 이것은 무관하다!

+1

다른 방법이 아닌가요? "데이터베이스"에 표시되는 내용이 반올림됩니다. –

+0

해당 열의 데이터 형식은 무엇입니까? –

+0

@OneTrickPony 박람회 소식입니다 !! 내가 어떻게 알아? –

답변

1

아마도 문제는 플로트 번호가 PHP 내부적으로 어떻게 저장되는 것입니까? 그것에 대해 읽어보십시오 in official docs.

UPD : 또한 PDOStatement::bindColumn와 문자열 (PDO :: PARAM_STR)와 같은 결과 열을 지정할 수 있습니다,하지만 난 그것을 확인하지 않았다 .

+0

흥미 롭습니다. 재미있을 수도 있고, 들여다 볼 수도 있습니다. 고마워요. –

+0

둘 다 sugestions를 시도했지만, 슬프게도 해결되지 않았습니다. 이것은 Microsoft가 부동 소수점을 처리하는 방법과 관련이 있다고 생각합니다 –

+0

문자열에 반환 된 값을 캐스팅하는 루틴을 수정할 수 있습니까? (해당 옵션 인 경우)? – pinepain