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

problemas con tipo de campo double

Estas en el tema de problemas con tipo de campo double en el foro de Mysql en Foros del Web. Hola Gente. He realizado un sistemita del tipo contable en mysql, y al campo de los importe le asigné el tipo double, para poder poner ...
  #1 (permalink)  
Antiguo 02/12/2008, 15:08
Avatar de arielcasanova  
Fecha de Ingreso: octubre-2004
Ubicación: Bahía Blanca - Argentina
Mensajes: 332
Antigüedad: 19 años, 6 meses
Puntos: 1
problemas con tipo de campo double

Hola Gente. He realizado un sistemita del tipo contable en mysql, y al campo de los importe le asigné el tipo double, para poder poner importes del tipo 45.30. El tema es que a veces el sistema realiza alguna operación de resta, y por ejemplo: 45.30 - 15.20 se convierte en 40.10000000008 ¿alguien tiene idea de por qué, y de cómo puedo solucionarlo?
Muchas gracias.
__________________
Ariel Casanova
diseño y desarrollo web estratégico
www.emporia.com.ar
  #2 (permalink)  
Antiguo 03/12/2008, 06:46
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: problemas con tipo de campo double

Me habia encontrado con ese problema en Access, lo achacaba a su gan nivel...

No, haber la explicación de esto debe estar en el nivel binario de un campo Double, por lo que sea al hacer la operacion entre dos numeros aparece un residuo... yo siempre he optado por redondear el resultado al numero de decimales que me interesa (generalmente 2 en el caso de las monedas) y despreciar el resto...

En pseudo codigo


(Entero((CampoA-CampoB)*100)+.5)/100

Con eso consigues un numero de dos decimales limpio de residuos.... puedes sustituir la operación entre campos (en rojo) por cualquier otra...

(supongo que el error es el 000008 y no que de 40 cuando deberia dar 30 el ejemplo que has puesto)

Cita:
45.30 - 15.20 se convierte en 40.10000000008
Quim
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:41.