BUG #15812: Select statement of a very big number, with a division operator seems to round up.

Поиск
Список
Период
Сортировка
Искать
От
PG Bug reporting form
Тема
BUG #15812: Select statement of a very big number, with a division operator seems to round up.
Дата
в 15:46:17
Msg-id
15812-adda7f0f3359803c@postgresql.org
Список
Дерево обсуждения
BUG #15812: Select statement of a very big number, with a division operator seems to round up. PG Bug reporting form <noreply@postgresql.org>
Re: BUG #15812: Select statement of a very big number, with adivision operator seems to round up. Alvaro Herrera <alvherre@2ndquadrant.com>
Re: BUG #15812: Select statement of a very big number, with adivision operator seems to round up. Andres Freund <andres@anarazel.de>
RE: BUG #15812: Select statement of a very big number, with adivision operator seems to round up. Kaleb Akalework <kaleb.akalework@asg.com>
Re: BUG #15812: Select statement of a very big number, with adivision operator seems to round up. Dean Rasheed <dean.a.rasheed@gmail.com>
RE: BUG #15812: Select statement of a very big number, with adivision operator seems to round up. Kaleb Akalework <kaleb.akalework@asg.com>
Re: BUG #15812: Select statement of a very big number, with adivision operator seems to round up. Andres Freund <andres@anarazel.de>
Re: BUG #15812: Select statement of a very big number, with adivision operator seems to round up. "David G. Johnston" <david.g.johnston@gmail.com>
Re: BUG #15812: Select statement of a very big number, with a division operator seems to round up. Andrew Gierth <andrew@tao11.riddles.org.uk>
The following bug has been logged on the website:

Bug reference:      15812
Logged by:          Kaleb Akalework
Email address:      kaleb.akalework@asg.com
PostgreSQL version: 11.3
Operating system:   Windows/Linux
Description:        

I have a need to divide a big number numeric(20) by 10000000000 to feed it
into a floor function. The division operation rounds up the number which
causes problems. I need the division to just divide the number without
rounding up or down. For my purposes 3691635539999999999/10000000000 should
return 369163553.9999999999 not 369163554. This happens if the data is
retrieved from a column. Below are queries to reproduce the problem

create table test_table
(
    REQUEST_UUID varchar(50) not null,
    BIG_NUM numeric(20,0) not null
);

INSERT INTO test_table (REQUEST_UUID, BIG_NUM) values ('TEST',
3691635539999999999);
INSERT INTO test_table (REQUEST_UUID, BIG_NUM) values('TEST',
3691635530099999999);
INSERT INTO test_table (REQUEST_UUID, BIG_NUM) values('TEST',
3691635530999999999);

SELECT BIG_NUM, FLOOR(BIG_NUM/10000000000),  BIG_NUM/10000000000 from
test_table;

The following is the result of the above select. you can see that column 2
for first row was rounded up.

"3691635539999999999"	"369163554"	"369163554.00000000"
"3691635530099999999"	"369163553"	"369163553.01000000"
"3691635530999999999"	"369163553"	"369163553.10000000"

В списке pgsql-bugs по дате отправления
От: Tom Lane
Дата:
От: Alvaro Herrera
Дата:
FAQ