Re: [Pgsql-ayuda] FLOAT O NUMERIC

From: Antonio Castro <acastro(at)ciberdroide(dot)com>
To: Edwin Alberto Quijada <macaruchi(at)hotmail(dot)com>
Cc: pgsql-ayuda(at)tlali(dot)iztacala(dot)unam(dot)mx
Subject: Re: [Pgsql-ayuda] FLOAT O NUMERIC
Date: 2003-07-15 18:40:42
Message-ID: Pine.LNX.4.21.0307151930290.1222-100000@midas.ciberdroide.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On Tue, 15 Jul 2003, Edwin Alberto Quijada wrote:

> TENGO UNA DUDA EN Q TIPO DE DATOS DEBO DE USAR PARA REPRESENTAR VALORES DE
> PUNTOS FLOTANTES. SIEMPRE HE USADO FLOAT PERO EL MANUAL ME DICE QUE SON
> IMPRECISOS.
> QUE ME PUEDEN RECOEMNDAR PARA ESTE TIPO DE DEFINICION???
>
> GRACIAS!!

Los Float tienen una precisión alta pero fija. Los datos numéricos
pueden ser definidos con la precisión deseada.

Los importes monetarios no deben tratarse con Float. No son magnitudes
analógicas como el peso, volumen, temperatura, etc. Si trabajas con
Euros por ejemplo la cantidad más pequeña que puedes manejar es un
céntimo de euro. Al hacer una factura y aplicar un determinado impuesto
del 16% no estás simplemente multiplicando por 0.16, también estás
aplicando y consolidando una operación de redondeo perfectamente establecida
y legislada, porque las fracciones de centimo de euro no existen, y sería
un error contabilizarlas aunque aparentemente parezca un sistema más
preciso lo cierto es que provocaría toda clase de descuadres.

En asuntos monetarios A/2 + B/2 no tiene porque ser igual a
( A + B ) / 2

1.09/2 = 0.545 -(redondeo)-> 0.55
2.09/2 = 1.045 -(redondeo)-> 1.05

0.55 + 1.05 = 1.60 != 1.59 = 3.18 /2 = (1.09 + 2.09) /2

La cuestión es que en una magnitud digital no redondear y usar una fracción
es un error. Por el contrario en una magnitud analógica redondear introduce
una determinada imprecisión.

Para Euros o dolares suele usarse numeric(9,2). Usar Float sería un error
Usar numeric(9,3) o numeric(9,1) sería igualmente un error. Lo del 9 no
tiene tanta importancia puede ser más o menos de 9 dependiendo de que ese
campo registre presupestos estatales o precios unitarios de caramelos.

--
Un saludo
Antonio Castro

/\ /\ Ciberdroide Informática
\\W// << http://www.ciberdroide.com >>
_|0 0|_
+-oOOO-(___o___)-OOOo---------------------+
| . . . . U U . Antonio Castro Snurmacher |
| . . . . . . . acastro(at)ciberdroide(dot)com |
+()()()---------()()()--------------------+

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Aram Martinez Vega (Broadcast) 2003-07-15 18:42:13 Re: [Pgsql-ayuda] Ayuda
Previous Message Alvaro Herrera 2003-07-15 18:38:09 Re: [Pgsql-ayuda] Optimizando PostgreSQL