Ver Mensaje Individual
  #1  
Antiguo 05-09-2007
jsanchez jsanchez is offline
Miembro
 
Registrado: may 2003
Posts: 90
Reputación: 22
jsanchez Va por buen camino
dato real no exacto

Hola Foro,

Se me presenta el siguiente problema.

Lo primero decir que utilizo firebird 1.5 y 2.0

Tengo una tabla de prueba sencilla, con un campo codigo de tipo integer, llave primaria, y un campo Monto de tipo double precision.

Con el SQL Explorer hago lo siguiente.
En la data de la tabla pongo 1 para codigo y -5131.57 para Monto.
Luego Ejecuto las siguientes sentencias SQL
Código SQL [-]
UPDATE PRUEBA SET MONTO = MONTO + 5000.0000 WHERE CODIGO =1;
UPDATE PRUEBA SET MONTO = MONTO + 10.0500 WHERE CODIGO =1;
UPDATE PRUEBA SET MONTO = MONTO + 64.0000 WHERE CODIGO =1;
UPDATE PRUEBA SET MONTO = MONTO + 57.5200 WHERE CODIGO =1;

Y contrariamente a lo esperado el campo Monto no tiene el valor 0, si no 2.91322521661641E-13
He hecho otras pruebas con Numeric, me da el mismo resultado, y con float, fue peor porque el monto tenía un valor final de: 0.000178833011887036.

Estas pruebas las he hecho desde el SQL Explorer y desde el IBExpert.

Incluso utilizando el IBExpert para meter el primer registro, digito -5131.57, y si luego vuelvo a ese mismo campo no tiene ese valor, sino -5131.5699999999997, de todas maneras si hago un solo update por todo el monto -5131.57, si me deja el valor final en 0.

Alquien tiene idea de por qué puede pasar esto?

Muchas gracias por la ayuda.
Responder Con Cita