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)
-   -   Problemas de calculo en Procedimientos (https://www.clubdelphi.com/foros/showthread.php?t=589)

Olympus 19-05-2003 19:23:31

Problemas de calculo en Procedimientos
 
Hola

Tengo este problema y la verdad es que no encuentro la causa
Dentro de un Procedimiento en Firebird 1.0 realizo este calculo
Calc = 1+(10.5/100);
Calc es un parametro de salida del tipo FLOAT probe tambien con NUMERIC 18,3 y el resultado es el mismo siempre me devuelve
Calc = 1,10000002 cuando deberia devolver Calc = 1,105

Cual es el problema y como puedo solucionarlo

Muchas Gracias

guillotmarc 19-05-2003 19:32:37

Hola.

Prueba con : 1.000 + (10.500 / 100.000)

El problema está en que se truncan los valores, en cambio si especificas cada operando con el numero de decimales que quieres en el resultado, no debería haber problemas.

Saludos.

Olympus 19-05-2003 22:33:09

Gracias Marc

El problema es que cuando haces (10500/100000) deberia dar 0,105 y ahi es donde ya se trunca el resultado y nose como resolverlo.

¿ Sabes que otra cosa puedo hacer ?

Gracias

jceluce 19-05-2003 22:41:38

Probá con 10.5 * 0.01 (las multiplicaciones siempre dan bien)

Olympus 19-05-2003 23:16:07

Gracias Marc

El problema es que cuando haces (10500/100000) deberia dar 0,105 y ahi es donde ya se trunca el resultado y nose como resolverlo.

¿ Sabes que otra cosa puedo hacer ?

Gracias

Olympus 19-05-2003 23:28:16

Gracias Marc

El problema es que cuando haces (10500/100000) deberia dar 0,105 y ahi es donde ya se trunca el resultado y nose como resolverlo.

¿ Sabes que otra cosa puedo hacer ?

Gracias

guillotmarc 19-05-2003 23:32:41

Hola.

Creo que no nos hemos entendido. Cuando te indicaba que operases con 10.500 quería decir diez coma cinco cero cero, y no diez mil quinientos.

Puesto que el problema de los truncamientos, se soluciona poniendo cada operando a la precisión con la que quieres el resultado. Así el resultado será como mínimo de esa precisión (o normalmente superior).

Verás como 10.500 / 100.000 devuelve correctamente 0.105000 (es más, al ser una división añade 3 dígitos de precisión)

Nota : Si los números con los que vas a operar són parámetros o variables, solo tienes que especificarlos de tipo numeric(18, 3).

Saludos.

Olympus 20-05-2003 00:38:23

Muchas gracias jceluce
Muchas Gracias Mark, perdona se me habia pasado por alto el PEQUEÑO detalle de la coma. Asi que ahora si me funciono

Saludos


La franja horaria es GMT +2. Ahora son las 15:20:00.

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