BUG #15434: NUMERIC without any precision or scale truncates scale to 16 digits

Started by PG Bug reporting formover 7 years ago3 messagesbugs
Jump to latest
#1PG Bug reporting form
noreply@postgresql.org

The following bug has been logged on the website:

Bug reference: 15434
Logged by: Andrey L
Email address: parihaaraka@gmail.com
PostgreSQL version: 10.5
Operating system: Ubuntu 16.04
Description:

# select
1800000000000000001::numeric / (10^18)::numeric truncated, -- truncates to
16 digits after decimal point
1800000000000000001::numeric(48,18) / (10^18)::numeric correct,
1800000000000000001::numeric / (10^18)::numeric * (10^18)::numeric
to_be_sure;
truncated | correct | to_be_sure

--------------------+----------------------+--------------------------------------
1.8000000000000000 | 1.800000000000000001 |
1800000000000000000.0000000000000000
(1 row)

#2Andrew Gierth
andrew@tao11.riddles.org.uk
In reply to: PG Bug reporting form (#1)
Re: BUG #15434: NUMERIC without any precision or scale truncates scale to 16 digits

"PG" == PG Bug reporting form <noreply@postgresql.org> writes:

PG> 1800000000000000001::numeric / (10^18)::numeric truncated, --
PG> truncates to 16 digits after decimal point

It has to truncate it _somewhere_, because otherwise 1::numeric / 3
would be infinitely long...

The choice that numeric division actually makes is to produce a result
with at least 16 significant figures, but also with at least as many
decimal places as the display scale of either of the inputs.

--
Andrew (irc:RhodiumToad)

#3Andrey
parihaaraka@gmail.com
In reply to: Andrew Gierth (#2)
Re: BUG #15434: NUMERIC without any precision or scale truncates scale to 16 digits

вт, 16 окт. 2018 г. в 14:30, Andrew Gierth <andrew@tao11.riddles.org.uk>:

"PG" == PG Bug reporting form <noreply@postgresql.org> writes:

PG> 1800000000000000001::numeric / (10^18)::numeric truncated, --
PG> truncates to 16 digits after decimal point

It has to truncate it _somewhere_, because otherwise 1::numeric / 3
would be infinitely long...

The choice that numeric division actually makes is to produce a result
with at least 16 significant figures, but also with at least as many
decimal places as the display scale of either of the inputs.

--
Andrew (irc:RhodiumToad)

It looks like precision does matters.
man: "...up to the implementation limit on precision".
Why we don't want to decrease scale, but we decrease precision without any
problems?

Regards,
Andrey L