Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-02-2007
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
Caso Raro de Decimales en campo de tipo Flotante

Uso FibPlus 6.3, Firebird 1.54
Buen día compañeros, les platico mi problema que en mi punto de vista esta super raro, tengo un maestro detalle y un dbGrid, este último lo enlazó al Detalle por medio de su propiedad datasource, ahora bien, tengo 3 campos de tipo Flotante, en donde formateo cada campo dentro del fibDataSet, en su propiedad :
DisplayFormat le asignó el valor ###,###,##0.00000
EditFormat le asignó el valor ########0.00000

Ahora, todo marcha a la perfección, el usuario captura datos a dichos campos, hasta que por arte de magia capturaron 152.40 al darle enter se mostró 152.39999 , al seguir haciendo pruebas capturo cualquier cosa que se me ocurra por ejemplo:
50.10 me lo deja en 50.10000
10.00 me lo deja en 10.00000
10.10 me lo deja en 10.10000
152.10 me lo deja en 152.10000
152.20 me lo deja en 152.20000
152.30 me lo deja en 152.30000
152.50 me lo deja en 152.50000

Que estará pasando aqui ?????
Agradezco cualquier sugerencia....
__________________
"Hemos aprendido a volar como los Pájaros, y a nadar como los Peces, y todavía No aprendemos a vivir como Hermanos". Martin Luther King

Última edición por AGAG4 fecha: 20-02-2007 a las 02:27:00.
Responder Con Cita
  #2  
Antiguo 20-02-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Cita:
152.40 al darle enter se mostró 152.39999
Los flotantes siempre tendrán un número distinto de decimales al que tu especificas, por la forma en que están implementados.

Usa Numeric(10,2) en dialecto 3, de esa forma obligas a FB a usar un Int64 para representar los números decimales y no obtendrás esos errores.


Cita:
152.10 me lo deja en 152.10000
Esto es normal, ya que le dices que quieres ###,###,##0.00000 (5 decimales), la máscara para 2 decimales suele ser ,#0.00 eso añade las comas como separador de millar y el punto como decimal (como ves, solo indico 2 ceros... 2 decimales).

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 20-02-2007 a las 12:40:15.
Responder Con Cita
  #3  
Antiguo 20-02-2007
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
Gracias Lepe

Gracias Lepe, funcionó a la perfección, pero ya recorde porque los tenía de tipo flotante, antes los tenia de tipo Numeric, pero los deje de tipo flotante porque uso para imprimir el ZReport y si cambio de Flotante a Numeric ya no muestra los datos de los campos donde hice dicha modificación y si cambio de Numeric a Flotante dentro del ibExpert refresco la tabla para que tome los tipos de datos nuevos y al mandar a imprimir por pantalla ya me aparece los datos, ese fue el motivo del cambio....

Agradezco algun comentario al respecto.
__________________
"Hemos aprendido a volar como los Pájaros, y a nadar como los Peces, y todavía No aprendemos a vivir como Hermanos". Martin Luther King
Responder Con Cita
  #4  
Antiguo 20-02-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
intenta engañar a ZReport.

Abres una consulta con los campos, ahora recorres FieldDefs y cambia el tipo de cada campo a Float (Fieldtype a ftFloat), por último intenta asociarlo al ZReport.

Esto se llama jugar sucio... pero ojalá dé resultados .

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 21-02-2007
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
ok

Gracias Lepe, me funciono con cambiarle al tipo de dato DOUBLE PRECISION el problema es que la BD se inchará mas rápido, voy a probar tu consejo....
Que tengas buen día.
__________________
"Hemos aprendido a volar como los Pájaros, y a nadar como los Peces, y todavía No aprendemos a vivir como Hermanos". Martin Luther King
Responder Con Cita
  #6  
Antiguo 21-02-2007
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
Cita:
Empezado por Lepe
intenta engañar a ZReport.

Abres una consulta con los campos, ahora recorres FieldDefs y cambia el tipo de cada campo a Float (Fieldtype a ftFloat), por último intenta asociarlo al ZReport.

Esto se llama jugar sucio... pero ojalá dé resultados .

Saludos
Ya hize pruebas a como me explica:
Código Delphi [-]
   //Caso 1
    zrReport.DataSet := Nil;
    for x:=0 to Query.FieldCount - 1 do
      if (Query.Fields.Fields[x].DataType = ftFMTBcd) then
        Query.FieldDefs[x].DataType := ftFloat;

    zrReport.DataSet := ibQuery;
   

   //Caso 2
    zrReport.DataSet := Nil;
    for x:=0 to Query.FieldCount - 1 do
      if (Query.Fields.Fields[x].DataType = ftFMTBcd) then
        Query.FieldDefs[x].DataType := ftBCD;
 
    zrReport.DataSet := ibQuery;
En ninguno de los 2 casos funciono....
__________________
"Hemos aprendido a volar como los Pájaros, y a nadar como los Peces, y todavía No aprendemos a vivir como Hermanos". Martin Luther King
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
ayuda con numeros de tipo flotante vero_17jm SQL 3 07-12-2006 14:06:51
Un caso bien raro???? jwmoreira MS SQL Server 9 14-12-2005 17:46:32
Cómo Redondear a 4 decimales un campo de tipo Numérico vick Conexión con bases de datos 1 11-10-2005 01:04:23
Como Reducir Decimales en Campo Float???? AGAG4 Firebird e Interbase 3 26-09-2005 15:27:07


La franja horaria es GMT +2. Ahora son las 21:01:11.


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