gpt4 book ai didi

postgresql bigint 太大了吗?

转载 作者:行者123 更新时间:2023-11-29 11:56:04 25 4
gpt4 key购买 nike

运行

PostgreSQL 11.4 (Debian 11.4-1.pgdg90+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516, 64-bit

我试过这个语句:

SELECT CAST (2^63-1 as bigint);

但收到意外错误消息:

bigint out of range

奇怪的是,如果我只是用它的等价整数替换指数形式:

SELECT CAST (9223372036854775807 as bigint)

它按预期工作。我想这只是我没有正确理解事情。 FWIW 我可以使用的最大指数表示法是这样的:

SELECT CAST (2^63-513 as bigint);

任何更大的错误都以同样的方式出现。

关于 PostgreSQL 如何求幂,我遗漏了什么?或者,它是否被转换为 float 并返回,我看到舍入/截断错误?

最佳答案

是的,它被转换为 double ,因此您会看到这些舍入错误:

select pg_typeof(2^63);
pg_typeof
------------------
double precision

select pg_typeof(2^63-1);
pg_typeof
------------------
double precision

如果您以数字开头,它会起作用:


select (2::numeric^63-1)::bigint;
int8
---------------------
9223372036854775807

关于postgresql bigint 太大了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57364079/

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