[Pgsql-ayuda] Relacionado con este tema..... Era: Pgsql-ayuda] ¿Cómo se come esto?

Manuel Sugawara masm@fciencias.unam.mx
03 Dec 2002 13:21:29 -0600


Operaciones - Piensa Technologies <operaciones@piensa.com> writes:

> Esto tiene relación con lo que está sucediendo, tal vez a alguien le
> haya pasado lo mismo:
> 
> La versión de PostgreSQL en la que sucedió esto es la 7.1.2

En realidad no esta relacionado con el problema anterior (léase más
abajo), sino con la comparación de numeros flotantes.

> 
> La tabla tiene entre otras columnas (no es salida del pgsql los ejemplos
> que siguen, los he inventado al escribir basado en lo que sucedió):
> 
> id | saldo
> ----------
> 1    500.45
> 2    194.29
> 3    983.17
> etc.
> 
> AL realizar un:  SELECT saldo from tabla where saldo=983.17
> 
> Resulta que no hay resultado, pero si se hace:
> 
> SELECT saldo from tabla where saldo>983.17 and saldo<983.18
> 
> Regresa el registro con id 3.   Obviamente el valor de saldo es
> algo así como 983.17999999.... lo hemos "probado" modificando el rango
> del select anterior (saldo>=983.171 and saldo<983.175..y así
> sucesivamente).

Consultas exactas entre números flotantes es difícil, no solo en
postgres sino en general en las computadoras. Si realmente necesitas
hacer este tipo de consultas deberías pensar en cambiar float por
numeric.

Saludos,
Manuel.