Я пытаюсь выполнить некоторые операции с большим числовым полем, например 2 ^ 89.
Числовой тип данных Postgres может хранить 131072 слева от десятичной точки и 16383 цифры справа от десятичной.
Я пробовал что-то подобное, и это сработало:
select 0.037037037037037037037037037037037037037037037037037037037037037037037037037037037037037037037037037::numeric;
Но когда я ставлю какой-то оператор, он округляет значения после 14 цифр.
select (2^89)::numeric(40,0);
numeric
-----------------------------
618970019642690000000000000
(1 row)
Я знаю, что значение из другого места:
>>> 2**89
618970019642690137449562112
Почему это странное поведение. Он не позволяет мне вводить в базу данных значения, превышающие 14 цифр.
insert into x select (2^89-1)::numeric;
select * from x;
x
-----------------------------
618970019642690000000000000
(1 row)
Есть ли способ обойти это.
Заранее спасибо.
bb23850