FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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 |
#2
|
||||
|
||||
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.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
#3
|
|||
|
|||
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 |
#4
|
|||
|
|||
Probá con 10.5 * 0.01 (las multiplicaciones siempre dan bien)
__________________
Saludos Javier |
#5
|
|||
|
|||
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 |
#6
|
|||
|
|||
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 |
#7
|
||||
|
||||
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.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). Última edición por guillotmarc fecha: 19-05-2003 a las 23:37:13. |
#8
|
|||
|
|||
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 |
|
|
|