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 |
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.
|
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. |
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 |
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:21:28. |
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