2017-11-23 9 views
1

는 일을하고 날짜를 저장하고 성공을 반환합니다 모든 float 또는 이중 필드 588966.68MySQL의 저장 플로트 오류

SQL 쿼리에이 번호를 저장하려고합니다. 지금은 588966.69

당신은 0.68를 저장하고 0.69를 얻을 수 읽기에 말할 것이다, 방금 저장 한 값을 검색!?!

어떻게 가능합니까? 내 필드 유형은 FLOAT (10,2)도 DECIMAL (12,2) 및 DECIMAL (12,3)과 함께 DOUBLE (12,2)로 시도했지만 명시적인 2 소수 만 필요합니다.

나는 120K 이상은 DECIMAL 필드 유형에 맞는지

+0

어떤 SQL dbms를 사용하고 있습니까? 번역? –

+0

@PieroAlberto는 아마존에서 이것을 알아 냈습니다. Aurora는 또한 서버 버전에 대한 테스트를 수행했습니다 : 5.7.18-log-InnoDB가있는 MySQL 커뮤니티 서버 (GPL) – INs

+0

'FLOAT' 또는' DOUBLE'! –

답변

0

FLOAT은 24 비트의 정확도가입니다. 숫자 최대 128K는 정수 부분을 나타내는 데 17 비트가 필요하며 소수 부분에는 7 비트 만 남습니다.

128K와 256K 사이 : 정수의 경우 18 비트. 분수에 대해서만 6 비트. 6 비트는 64 개의 다른 값을 제공하지만 소수점 2 자리에는 100 개의 다른 값이 필요합니다. 정밀도가 충분하지 않습니다.

+0

그게 아주 좋은 설명. 이제 교훈을 얻었습니다. 금융 소프트웨어에 FLOAT를 사용하지 마십시오. :) – INs

0

스크래치를 숫자로 이런 일을 발견!