Re: Purpose of rscale/dscale in NUMERIC?

Поиск
Список
Период
Сортировка
От Jan Wieck
Тема Re: Purpose of rscale/dscale in NUMERIC?
Дата
Msg-id 3D9AEACF.CF684BA0@Yahoo.com
обсуждение исходный текст
Ответ на Purpose of rscale/dscale in NUMERIC?  (Tom Lane <tgl@sss.pgh.pa.us>)
Ответы Re: Purpose of rscale/dscale in NUMERIC?  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers
Tom Lane wrote:
> 
> What is the reason for maintaining separate rscale and dscale values in
> numeric variables?
> 
> I am finding that this arrangement leads to some odd results, for
> example this:
> 
> regression=# select (exp(ln(2.0)) - 2.0);
>       ?column?
> ---------------------
>  -0.0000000000000000
> (1 row)
> 
> regression=# select (exp(ln(2.0)) - 2.0) * 100000;
>       ?column?
> ---------------------
>  -0.0000000000000010
> (1 row)
> 
> The difference between rscale and dscale allows some "hidden" digits to
> be carried along in an expression result, and then possibly exposed
> later.  This seems pretty nonintuitive for an allegedly exact
> calculational datatype.  ISTM the policy should be "what you see is what
> you get" - no hidden digits.  That would mean there's no need for
> separating rscale and dscale, so I'm wondering why they were put in
> to begin with.

You need to carry around a decent number of digits when you divide
already. Exposing them in a manner that numericcol(15,2) / 3.0 all of
the sudden displays 16 or more digits isn't much more intuitive. But
carrying around only 2 here leads to nonintuitively fuzzy results on the
other hand.

It only applies to division and higher functions, and these are not
"exact" if you calculate the result and represent it decimal. They never
have been.

So to answer your question, they are there to make the NUMERIC datatype
useful for non-exact stuff too. You can expect an exact result where an
exact representation in decimal can be expected. Where this is not the
case, you get a good approximation.


Jan

-- 

#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me.                                  #
#================================================== JanWieck@Yahoo.com #


В списке pgsql-hackers по дате отправления:

Предыдущее
От: Vince Vielhaber
Дата:
Сообщение: Re: [GENERAL] New PostgreSQL Website : advocacy.postgresql.org
Следующее
От: Oleg Bartunov
Дата:
Сообщение: Re: [GENERAL] New PostgreSQL Website : advocacy.postgresql.org