[Pgsql-ayuda] FLOAT O NUMERIC

Antonio Castro acastro@ciberdroide.com
Tue, 15 Jul 2003 20:40:42 +0200 (CEST)


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

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

Los Float tienen una precisi=F3n alta pero fija. Los datos num=E9ricos
pueden ser definidos con la precisi=F3n deseada.=20

Los importes monetarios no deben tratarse con Float. No son magnitudes
anal=F3gicas como el peso, volumen, temperatura, etc. Si trabajas con
Euros por ejemplo la cantidad m=E1s peque=F1a que puedes manejar es un
c=E9ntimo de euro. Al hacer una factura y aplicar un determinado impuesto
del 16% no est=E1s simplemente multiplicando por 0.16, tambi=E9n est=E1s=20
aplicando y consolidando una operaci=F3n de redondeo perfectamente establec=
ida
y legislada, porque las fracciones de centimo de euro no existen, y ser=EDa
un error contabilizarlas aunque aparentemente parezca un sistema m=E1s
preciso lo cierto es que provocar=EDa toda clase de descuadres.=20

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

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

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

La cuesti=F3n es que en una magnitud digital no redondear y usar una fracci=
=F3n
es un error. Por el contrario en una magnitud anal=F3gica redondear introdu=
ce=20
una determinada imprecisi=F3n.=20

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


--=20
Un saludo
Antonio Castro

       /\     /\   Ciberdroide Inform=E1tica=20
         \\W//  << http://www.ciberdroide.com >>
        _|0 0|_                                                   =20
+-oOOO-(___o___)-OOOo---------------------+=20
| . . . . U U . Antonio Castro Snurmacher | =20
| . . . . . . . acastro@ciberdroide.com   |=20
+()()()---------()()()--------------------+