From: | Alvaro Herrera <alvherre(at)dcc(dot)uchile(dot)cl> |
---|---|
To: | mmiranda(at)americatel(dot)com(dot)sv |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: numeric vs real |
Date: | 2005-04-27 19:12:37 |
Message-ID: | 20050427191237.GA4700@dcc.uchile.cl |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
On Wed, Apr 27, 2005 at 12:18:15PM -0600, mmiranda(at)americatel(dot)com(dot)sv wrote:
> Hola, cual es la opcion recomendada cuando se necesitan numeros bastante
> grandes pero sin decimales, en el manual dice que hacer calculos con valores
> numeric es mas lento que cuando usas real, alguien tiene experiencia
> practica con esto, yo necesito hacer operaciones arimeticas:
bigint?
> c = a - b
>
> donde a,b y c son numeros de 25 digitos pero solo enteros, ejemplo
>
> a = 50300000000000000000000
> b = 50399999999999999999999
>
> Uso tipo de datos real o numeric?, mi interes principal es rapidez, no
> precision, en este caso creo que no importa mucho ya que no hay redondeo de
> decimales, etc
Ojo que almacenar numeros muy grandes en punto flotante simplemente
mueve la perdida de precision hacia el otro lado de la coma ... Si
requieres que los numeros se preserven en toda exactitud (aunque sea sin
decimales), no puedes usar tipos de punto flotante.
alvherre=# select 5000000033000000000000000000003000::float - 5000000033000000000000000000500000::float;
?column?
----------
0
(1 fila)
alvherre=# select 5000000033000000000000000000003000::numeric - 5000000033000000000000000000500000::numeric;
?column?
----------
-497000
(1 fila)
Si no te sirve bigint (el cual no alcanza para 25 digitos), tendrias que
usar numeric.
--
Alvaro Herrera (<alvherre[(at)]dcc(dot)uchile(dot)cl>)
"Si quieres ser creativo, aprende el arte de perder el tiempo"
From | Date | Subject | |
---|---|---|---|
Next Message | mmiranda | 2005-04-27 19:13:52 | RE: numeric vs real |
Previous Message | mmiranda | 2005-04-27 19:12:19 | RE: numeric vs real |