Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Cuando cero - cero es 5.755533321E-13 (https://www.clubdelphi.com/foros/showthread.php?t=30580)

IVAND 10-04-2006 19:36:17

Cuando cero - cero es 5.755533321E-13
 
Hola a todos

He creado un Sp que me saca el saldo anterior de un periodo (sumando y restando debe-haber los campos estan definidos como numeric (15,2) ) unos campos me retornan valores medios diabolicos :o como los indicado en el mensaje aque se debe esto y como debo corregirlos

Nota : Repito los campos son numeric (15,2) los valores son ingresados con dos decimales no hay posibilidad de ingresar mas de dos digitos

Cuando resto (saldo_ant+debe-haber)<>0 los campos con supuestos ceros se muestran :mad: me posiciono en este campo Saldo_ant (se muestran los numeros indicados)

Que puedo hacer


De antemano gracias

Athanatos 10-04-2006 21:02:44

En algún momento se está contaminando con cálculos en punto flotante. O bien encuentras lo que está contaminando tus cálculos o reemplazas tus comparaciones con 0 con algo asi (x>-0.1E-6) and (x<0.1E-6) por ejemplo.

Ricard Rabassó 11-04-2006 18:13:48

es común
 
Estas usando Double Precision en la declaración de las variables con las que haces cálculos, ¿verdad? A mi me pasó y tube que rehacer las tablas y ponerlas como Numeric(15,3) y a partir de entonces me fue de perlas.
Cuando operes con cantidades con decimales en Delphi usa el .asCurrency que es menos preciso y no añade decimales de más.

Espero que lo que te digo te vaya bien.

IVAND 11-04-2006 19:52:05

Gracias por su interes


Todas mis tablas tienen declarados los campos numeric(15,2) no estan como double precision

el sp tiene igual cosa que mas puedo hacer

IVAND 12-04-2006 16:06:26

La trama se complica :-( he localizado el valor que me esta dando 5.3333333 -E15 , lo curioso es que borro el valor lo vuelvo a ingresar y sigue con el problema , que pasa con el bendito firebird 1.53 o el que esta mal soy yo ,

campo haber definido como numeric(15,2) , valor visualmente mostrado 1535.37 me pongo sobre el campo (utilizo ib expert) me muestra 1535.369999999999999 estoy medio decepcionado imaginesen esto en un banco o alguna cooperativa ,

Tendriamos que cambiar la logica de como se ingresa un valor o que se yo pues este caso solo lo tengo en un ingreso (tengo mas de 500000):mad:

Alguien que me de una mano por favor


La franja horaria es GMT +2. Ahora son las 17:23:19.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi