Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

[SOLUCIONADO] Mysql resta de decimales en tipo de dato double incorrecta

Estas en el tema de Mysql resta de decimales en tipo de dato double incorrecta en el foro de Mysql en Foros del Web. Buen día a todos, Tengo un problema con la resta de decimales en un campo, lo explico a continuación. Tengo una columna cantidad para artículos, ...
  #1 (permalink)  
Antiguo 02/01/2016, 11:28
 
Fecha de Ingreso: enero-2016
Ubicación: Arequipa
Mensajes: 1
Antigüedad: 8 años, 9 meses
Puntos: 0
Pregunta Mysql resta de decimales en tipo de dato double incorrecta

Buen día a todos,

Tengo un problema con la resta de decimales en un campo, lo explico a continuación.

Tengo una columna cantidad para artículos, hice una inserción con un valor de 0.03.
El articulo hizo una salida de 0.01, por ende resto

UPDATE articulo set cantidad=cantidad - 0.01;

el resultado esperado seria de 0.02, pero al contrario , me resulta 0.019999999999999997.

A que se debe esto, y como podría solucionarlo.

Gracias de antemano.
  #2 (permalink)  
Antiguo 02/01/2016, 12:26
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 11 meses
Puntos: 2658
Respuesta: Mysql resta de decimales en tipo de dato double incorrecta

Estás usando un campo FLOAT, REAL o similar, que es un tipo de dato de punto flotante, es decir valores decimales por aproximación.
Para valores monetarios o donde los decimales requieran precisión, el tipo de dato a usar es DECIMAL.

http://dev.mysql.com/doc/refman/5.7/...int-types.html

Cita:
11.2.2 Fixed-Point Types (Exact Value) - DECIMAL, NUMERIC

The DECIMAL and NUMERIC types store exact numeric data values. These types are used when it is important to preserve exact precision, for example with monetary data. In MySQL, NUMERIC is implemented as DECIMAL, so the following remarks about DECIMAL apply equally to NUMERIC.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: bases-de-datos-general, décimales, double
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:59.