FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Cambio de precisión en float
Hola,
me pasa una cosa curiosa que escapa al alcance de mi razonamiento deductivo así que ahí dejo esto. Hago una inserción en una tabla de una BD SQL con servidor MSSQL donde el valor de algunos campos es tipo float y cuando pongo 20.54 (por ejemplo) el guarda 20.539999999999999. ¿Qué está pasando? ¿El sql transforma el formato? ¿Cómo se soluciona? Un saludo y gracias. |
#2
|
|||
|
|||
A mí también me ha pasado alguna vez, es normal. Cuando pones que lo guarde en el SQL como un Float lo hace así, pero no te preocupes que cuando lo saques para operar con ello lo considera de nuevo un 20.54. Esto creo q es así porque en memoria se guarda con ese formato.
Si lo que quieres es verlo en las tablas dentro del SQL Server con ese formato podrías usar el tipo Numeric en vez de ese, especificando número de decimales que quieres y parte entera. Un saludo. |
#3
|
|||
|
|||
Gracias. Ya había visto que lo recuperaba bien ya que delphi volvía a hacer el redondeo pero era por saber si había algo mal o era normal por los cambios en formatos delphi-sql.
Un saludo y nuevamente gracias. |
#4
|
|||
|
|||
Función Roundto
Para solucionar este problema, puedes utilizar la función roundto de delphi, en ella especificas cuántos decimales quieres.
Es cierto que cuando recuperas el número te devuelve el valor que deseas, pero podrías llegar a tener algunas situaciones un tanto molestas, como en el caso del 0, ya que si te guardara por ejemplo un número 0.0000000000000000001 (como a veces lo hace), y tú hicieras una consulta de los valores igual a 0, este registro quedaría excluído del dataset. En la ayuda viene explicado cómo utilizar la función roundto, solamente te recuerdo que el número de decimales lo tienes que especificar en negativo. Ej. roundto(myvar, -2); Saludos! Omar Gasca |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
precision en valores float | el_barto | Conexión con bases de datos | 2 | 09-09-2005 06:22:52 |
Cambio de motor de BD | adlfv | Conexión con bases de datos | 1 | 06-06-2005 20:01:04 |
Problema DBExpress muy lento | argami | Conexión con bases de datos | 4 | 22-06-2004 19:34:18 |
Campos Float en Firebird | Kira | SQL | 7 | 12-02-2004 17:06:45 |
Precision en los campos float | xerkan | Firebird e Interbase | 1 | 05-12-2003 12:31:47 |
|