2012-03-20 14 views
7

Actualmente el uso de MySQL versión 5.1.6Tener un mal momento decidió el float, double o decimal

Ésta es mi primera construcción del mundo real y hasta ahora han sido realmente disfrutar de ella; sin embargo, ahora estoy atascado en una decisión con respecto a un tipo de datos de campo y esperando que alguien pueda resolverlo por mí.

Básicamente tengo 10 campos que son todos resultados de pruebas diferentes. Los números van de -100 a 100 y pueden tener un decimal con un punto después del punto real. Por ejemplo, -5.1, 0, 1, 16.3, 99.2 y 100 son todos los datos posibles. Por lo que he leído, uno debe usar DECIMAL para las cosas que normalmente medimos y son exactas (cuáles son), mientras que FLOAT y DOUBLE son aproximaciones, lo que realmente no quiero (aunque estoy seguro de que en este nivel, la aproximación es muy pequeño si existe en absoluto).

Si uso DECIMAL, ¿tengo que incluir un espacio para el '-' al principio si se usa? I.E, ¿usaría DECIMAL (4,1) o DECIMAL (5,1) o estoy lejos de aquí? Podría pensar demasiado esto un poco.

+0

¿De modo que tu pregunta es realmente acerca de cómo debes elegir el argumento dimensional para 'DECIMAL'? ¿Y toda esa charla sobre 'FLOAT' y' DECIMAL' es redundante? Entonces, ¿qué tal si solo lees [la documentación] (http://dev.mysql.com/doc/refman/5.1/en/fixed-point-types.html)? –

Respuesta

4

El símbolo negativo NO cuenta como un dígito en su cálculo, por lo que DECIMAL (4,1) debería estar bien.

Editar: Ese también parece ser el campo correcto para usarlo para sus propósitos. ¡Pruébalo!

+0

Ambas respuestas me ayudaron, pero como la suya fue la primera, la elegí de la mejor manera. ¡Gracias! – shelzmike

6

DECIMAL(4,1) será suficiente, el dígito del signo no no necesita ser incluido.

Más información: http://dev.mysql.com/doc/refman/5.1/en/precision-math-decimal-changes.html

Por ejemplo, una columna DECIMAL(3,0) soporta un rango -999 a 999

decimal será sin duda la mejor opción para sus necesidades. Float y Double pueden darte números desagradables (por ejemplo, 0.2 no se puede representar como float, obtendrías 0.19999999)

Cuestiones relacionadas