Ver la Versión Completa : Problemas de calculo en Procedimientos
Olympus
19-05-2003, 19:23:31
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
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.