Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-05-2003
Olympus Olympus is offline
Registrado
 
Registrado: may 2003
Posts: 6
Poder: 0
Olympus Va por buen camino
Question 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
Responder Con Cita
  #2  
Antiguo 19-05-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
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).
Responder Con Cita
  #3  
Antiguo 19-05-2003
Olympus Olympus is offline
Registrado
 
Registrado: may 2003
Posts: 6
Poder: 0
Olympus Va por buen camino
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
Responder Con Cita
  #4  
Antiguo 19-05-2003
jceluce jceluce is offline
Miembro
 
Registrado: may 2003
Ubicación: Mar del Plata - Argentina
Posts: 29
Poder: 0
jceluce Va por buen camino
Probá con 10.5 * 0.01 (las multiplicaciones siempre dan bien)
__________________
Saludos

Javier
Responder Con Cita
  #5  
Antiguo 19-05-2003
Olympus Olympus is offline
Registrado
 
Registrado: may 2003
Posts: 6
Poder: 0
Olympus Va por buen camino
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
Responder Con Cita
  #6  
Antiguo 19-05-2003
Olympus Olympus is offline
Registrado
 
Registrado: may 2003
Posts: 6
Poder: 0
Olympus Va por buen camino
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
Responder Con Cita
  #7  
Antiguo 19-05-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
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.
Responder Con Cita
  #8  
Antiguo 20-05-2003
Olympus Olympus is offline
Registrado
 
Registrado: may 2003
Posts: 6
Poder: 0
Olympus Va por buen camino
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
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 02:44:43.


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
Copyright 1996-2007 Club Delphi