![]() |
Distorsion de datos obtenidos de una consulta
Hola, un saludo a toda la gente del foro =)
Estoy teniendo un problema con una tabla, la cree de la siguiente manera: create table rango( id_area varchar(3), id_indicador varchar(3), tipo char, rango0 real, rango1 real, rango2 real, rango3 real, rango4 real, primary key (id_area,id_indicador,tipo)) El problema es que al insertar valores en el atributo rango0, rango1, rango2, rango3 ó rango4 se distorsionan, por ejemplo intento colocar 0.85 al campo rango0 y en la base de datos se almacena como 0.8500002, y cuando quiero recuperar este dato me ocasiona errores pues, es un valor "inventado por el sql". mi consulta es select * from rango where id_area='a03' and id_indicador='i01' and tipo='F' Me sale 0.8500002 en el campo rango0, y en los otros campos reales sucede lo mismo. Traté de hacer esto select round(rango0,2) from rango where id_area='a03' and id_indicador='i01' and tipo='F' Y empeoró, me devolvió este resultado 0.84999999999999998 Espero me puedan dar un consejo de que puedo estar haciendo mal o cual puede ser el problema. Muchas Gracias anticipadamente. |
Esa "distorsión" viene dada en como se almacenan los valores de punto flotante, no es tan fácil por que hablamos de binario.
En vez de real prueba con decimal o numeric. |
Exacto,
Si el datatype de la columna es numeric, puedes especificarle la precision, tipo NUMERIC(10, 2) u otro, segun conveniencia. |
La franja horaria es GMT +2. Ahora son las 00:39:20. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi