PDA

Ver la Versión Completa : Cuando cero - cero es 5.755533321E-13


IVAND
10-04-2006, 19:36:17
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
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