Обсуждение: BUG #15434: NUMERIC without any precision or scale truncates scale to16 digits
BUG #15434: NUMERIC without any precision or scale truncates scale to16 digits
От
PG Bug reporting form
Дата:
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)
Re: BUG #15434: NUMERIC without any precision or scale truncates scale to 16 digits
От
Andrew Gierth
Дата:
>>>>> "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)
вт, 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
Andrey L