> On Jun 1, 2017, at 12:58 PM, Scott Marlowe <scott.marl...@gmail.com> wrote:
> 
> On Thu, Jun 1, 2017 at 10:42 AM, Steve Atkins <st...@blighty.com 
> <mailto:st...@blighty.com>> wrote:
>> 
>>> On Jun 1, 2017, at 9:26 AM, Louis Battuello <louis.battue...@etasseo.com> 
>>> wrote:
>>> 
>>> Is the round() function implemented differently for double precision than 
>>> for numeric? Forgive me if this exists somewhere in the documentation, but 
>>> I can't seem to find it.
>> 
>> https://www.postgresql.org/docs/current/static/datatype-numeric.html#DATATYPE-NUMERIC-DECIMAL
>> 
>> "When rounding values, the numeric type rounds ties away from zero, while 
>> (on most machines) the real and double precision types round ties to the 
>> nearest even number.".
>> 
>>> Why does the algorithm vary by data type?
>> 
>> Just guessing, but I'd assume because the NUMERIC type behaves as required 
>> by the SQL spec, while float and double are vanilla IEEE754 arithmetic and 
>> will do whatever the underlying hardware is configured to do, usually round 
>> to nearest even.
>> 
> 
> Exactly. It's important to remember that floats and doubles are
> imprecise representations meant for speed, while numeric is designed
> for accuracy not speed.
> 
> If one needs an exact answer, one does not use floats.
> 
> 
> -- 
> Sent via pgsql-general mailing list (pgsql-general@postgresql.org 
> <mailto:pgsql-general@postgresql.org>)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-general 
> <http://www.postgresql.org/mailpref/pgsql-general>

Perfectly clear now. Thank you!

Reply via email to