From: | Andy Balholm <andy(at)balholm(dot)com> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | "Kevin Grittner" <Kevin(dot)Grittner(at)wicourts(dot)gov>, pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: dividing money by money |
Date: | 2010-07-16 14:13:40 |
Message-ID: | DEC50D2F-6A1B-408E-89E0-F42556674553@balholm.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers pgsql-www |
On Jul 15, 2010, at 7:25 PM, Tom Lane wrote:
> * I didn't like this bit in cash_numeric():
>
> result->n_sign_dscale = NUMERIC_SIGN(result) | fpoint;
>
> Not only is that unwarranted chumminess with the implementation of
> numeric, it's flat-out wrong. If the result isn't exactly the right
> number of digits (say, it's 12.33999999 instead of the desired 12.34)
> this just hides the extra digits, it doesn't make the result correct.
> The right way is to use numeric_round(), which not only sets the dscale
> where we want it but rounds off any inaccuracy that might have crept in
> from the division.
Sorry about that. Is there documentation anywhere for backend functions and types? I couldn't find any, so I just looked through numeric.h to see what looked like it might work. I didn't find numeric_round, since it's declared in builtins.h.
From | Date | Subject | |
---|---|---|---|
Next Message | Markus Wanner | 2010-07-16 14:20:22 | Re: imessages up-date |
Previous Message | Kevin Grittner | 2010-07-16 14:01:57 | Re: imessages up-date |
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2010-07-16 14:31:50 | Re: dividing money by money |
Previous Message | Kevin Grittner | 2010-07-16 13:55:19 | Re: dividing money by money |