PDA

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