On Mon, 2021-04-19 at 08:00 +0000, PG Doc comments form wrote:
> The 'round' mathematical function documentation doesn't specify its rounding
> strategy. If this would be documented then users can rely on its rounding
> behavior. For double precision the rounding probably depends on your
> platform. For numeric the function seems to round to nearest with ties going
> away from zero (sometimes referred to as "round half up). 6.5 -> 7.0 and
> -6.5 -> -7.0.

Here is a proposed patch.

Yours,
Laurenz Albe
From a0c40fd431820f6d1ce96f5bc3f41bd7665028be Mon Sep 17 00:00:00 2001
From: Laurenz Albe <laurenz.a...@cybertec.at>
Date: Thu, 22 Apr 2021 18:53:14 +0200
Subject: [PATCH] Document tie breaking behavior of round()

---
 doc/src/sgml/func.sgml | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/doc/src/sgml/func.sgml b/doc/src/sgml/func.sgml
index 67d802b02c..fcc09d5231 100644
--- a/doc/src/sgml/func.sgml
+++ b/doc/src/sgml/func.sgml
@@ -1568,7 +1568,9 @@ repeat('Pg', 4) <returnvalue>PgPgPgPg</returnvalue>
         <returnvalue>double precision</returnvalue>
        </para>
        <para>
-        Rounds to nearest integer
+        Rounds to nearest integer.  For <type>numeric</type>, ties are
+        broken by rounding away from 0.  For <type>double precision</type>,
+        the tie breaking behavior is architecture dependent.
        </para>
        <para>
         <literal>round(42.4)</literal>
@@ -1583,7 +1585,7 @@ repeat('Pg', 4) <returnvalue>PgPgPgPg</returnvalue>
        </para>
        <para>
         Rounds <parameter>v</parameter> to <parameter>s</parameter> decimal
-        places
+        places.  Ties are broken by rounding away from 0.
        </para>
        <para>
         <literal>round(42.4382, 2)</literal>
-- 
2.26.3

Reply via email to