gpt4 book ai didi

postgresql - Postgres 大数值运算

转载 作者:行者123 更新时间:2023-11-29 12:39:29 24 4
gpt4 key购买 nike

我正在尝试对大数字字段(例如 2^89)进行一些操作。

Postgres 数字数据类型可以存储小数点左边的 131072 和小数点右边的 16383 位。

我试过这样的东西,它奏效了:

select 0.037037037037037037037037037037037037037037037037037037037037037037037037037037037037037037037037037::numeric;

但是当我输入一些运算符时,它会将 14 位数字后的值四舍五入。

select (2^89)::numeric(40,0);

numeric
-----------------------------
618970019642690000000000000
(1 row)

我知道其他地方的值(value)是:

>>> 2**89
618970019642690137449562112

为什么会出现这种奇怪的行为。它不允许我向数据库输入超过 14 位数字的值。

insert into x select (2^89-1)::numeric;

select * from x;
x
-----------------------------
618970019642690000000000000
(1 row)

有什么办法可以避免这种情况。

提前致谢。

bb23850

最佳答案

您不应转换结果,而应转换操作的一部分,以明确这是一个 numeric 操作,而不是一个 integer 操作:

select (2^89::numeric)

否则 PostgreSQL 将 289 作为 integer 类型。在那种情况下,结果也是 integer 类型,这不是该大小的精确值。您的类型转换是该不准确结果的类型转换,因此无法正常工作。

关于postgresql - Postgres 大数值运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58184823/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com