Re: rounding_up

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Christoph Moench-Tegeder <cmt(at)burggraben(dot)net>
Cc: Daria Shanina <vilensipkdm(at)gmail(dot)com>, pgsql-hackers(at)lists(dot)postgresql(dot)org
Subject: Re: rounding_up
Date: 2025-04-14 14:26:42
Message-ID: 1256274.1744640802@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Christoph Moench-Tegeder <cmt(at)burggraben(dot)net> writes:
> ## Daria Shanina (vilensipkdm(at)gmail(dot)com):
>> I noticed, when we parse and validate values (in particular, the int type),
>> we use the *rint* method, but unfortunately it does not work according to
>> the round rules.

> First question would be "which round rule?" as (of course) there're
> multiple to chose from.

Yeah. Round-to-nearest-even is a well-respected rule, which is why
it's the default per IEEE 754. I don't see a good reason for us
to switch. Even if someone advanced an argument, it would have
to be a *mighty* convincing argument to justify breaking backwards
compatibility here.

I do find it a little unfortunate that our numeric type does it
differently than our float types. Again though, there's a huge
compatibility argument against changing that now. It does give
you an "out" if you really need one or the other behavior for
a particular application: you can cast to numeric or float8
before casting to int.

regards, tom lane

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Maksim Milyutin 2025-04-14 14:33:36 Re: COALESCE with single argument looks like identity function
Previous Message Maksim Milyutin 2025-04-14 14:25:53 Re: COALESCE with single argument looks like identity function