아래 예제를 통해 mySQL에서 FLOAT가 어떻게 작동하는지 설명 할 수 있습니까? 저는 플로트가 근사치라는 것을 압니다,하지만 실제로 그러한 차이가 있습니까? 그리고 9 자리 숫자 밖에 없기 때문에 오버플로 문제가 아닙니다. 그렇지 않습니까?mysql에서 float 정밀도 문제가 발생했습니다
mysql> create table t(f FLOAT(15,2), db DOUBLE);
mysql> insert into t(f,db) VALUES (512659663, 512659663);
mysql> select * from t;
+--------------+-----------+
| f | db |
+--------------+-----------+
| 512659648.00 | 512659663 |
+--------------+-----------+
(MySQL은 14.14 DISTRIB 5.1.44 버전, Win32에서 대한 (IA32) Windows XP에서)
근사 오차를 추정 할 수 있습니까? 숫자의 크기에 따라 선형 적으로 달라 지거나 다른 것이 있습니까? –
@ts : 32 비트 IEEE 754 부동 소수점 숫자는 약 7 자리의 정확도를 유지할 수 있습니다. 64 비트 비트는 약 16 진수를 저장할 수 있습니다. 7 자리를 초과하는 것이 문제가 될 것입니다. FLOAT (15,2) 한정자는 효과적인 것보다 더 소원한 생각입니다. (15,2)는 기본적으로 무시됩니다. –
@Jonathan : '2'부분은 더 작은 값으로 간주되고 '15'는 큰 값으로 간주됩니다. – Quassnoi