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 |
+()()()---------()()()--------------------+
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 |