2012-03-20 8 views
7

Attualmente utilizza MySQL versione 5.1.6Avere un periodo difficile ha deciso il float, double, o decimale

Questa è la mia prima build mondo reale e finora ho effettivamente divertendo; tuttavia, ora sono bloccato su una decisione riguardante un tipo di dati sul campo e spero che qualcuno possa risolverlo per me.

Ho essenzialmente 10 campi con risultati di test diversi. I numeri vanno da -100 a 100 e possono avere un decimale con un punto dopo il punto attuale.

Ad esempio, -5,1, 0, 1, 16,3, 99,2 e 100 sono tutti dati possibili. Da quello che ho letto, si dovrebbe usare DECIMAL per quelle cose che di solito misuriamo e sono esatte (quali sono), mentre FLOAT e DOUBLE sono approssimazioni, che in realtà non voglio (anche se sono sicuro a questo livello, l'approssimazione è molto piccolo se inesistente).

Se si utilizza DECIMAL, è necessario includere uno spazio per il '-' all'inizio se utilizzato? I.E, dovrei usare DECIMAL (4,1) o DECIMAL (5,1) o sono qui via? Potrei pensarci un po 'troppo.

+0

Quindi la tua domanda è proprio su come dovresti scegliere l'argomento dimensionale su 'DECIMAL'? E tutto ciò che parla di 'FLOAT' e' DECIMAL' è ridondante? Allora che ne dici di leggere [la documentazione] (http://dev.mysql.com/doc/refman/5.1/en/fixed-point-types.html)? –

risposta

4

Il simbolo negativo NON conta come una cifra nel calcolo, pertanto DECIMALE (4,1) dovrebbe essere corretto.

Modifica: Anche questo sembra il campo giusto da utilizzare per i vostri scopi. Provalo!

+0

Entrambe le tue risposte mi hanno aiutato, ma poiché il tuo è stato il primo, l'ho scelto come migliore. Grazie! – shelzmike

6

DECIMAL(4,1) sarà sufficiente, la cifra del segno non non deve essere inclusa.

Maggiori informazioni: http://dev.mysql.com/doc/refman/5.1/en/precision-math-decimal-changes.html

Per esempio, una colonna DECIMAL(3,0) supporta una vasta gamma di -999 a 999

decimale sarà davvero l'opzione migliore per le vostre esigenze. Float e Double possono darti brutti numeri (ad esempio 0.2 non possono essere rappresentati come float, riceverai 0.19999999)

Problemi correlati