> On Jun 1, 2017, at 12:58 PM, Scott Marlowe <[email protected]> wrote:
> 
> On Thu, Jun 1, 2017 at 10:42 AM, Steve Atkins <[email protected] 
> <mailto:[email protected]>> wrote:
>> 
>>> On Jun 1, 2017, at 9:26 AM, Louis Battuello <[email protected]> 
>>> 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 ([email protected] 
> <mailto:[email protected]>)
> 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