我很难理解float(p)
PostgreSQL 中的精度参数 p 。例如,float(1)
对float(24)
我来说似乎完全一样。
谁能给我一些他们不同的例子,好吗?
我很难理解float(p)
PostgreSQL 中的精度参数 p 。例如,float(1)
对float(24)
我来说似乎完全一样。
谁能给我一些他们不同的例子,好吗?
它在手册中:
PostgreSQL 还支持 SQL 标准表示法 float 和 float(p) 用于指定不精确的数字类型。这里,p 指定二进制数字的最小可接受精度。PostgreSQL 接受 float(1) 到 float(24) 作为选择真实类型,而 float(25) 到 float(53) 选择双精度。超出允许范围的 p 值会产生错误。没有指定精度的浮点数被认为是双精度。
但是,这里的关键是它指定了可接受的最小精度。PostgreSQL 使用它来选择满足要求的基础数据类型(float4
或)。float8
regress=> \x
Expanded display is on.
regress=> SELECT
'1.123456789123456789'::float,
'1.123456789123456789'::double precision,
'1.123456789123456789'::float(1),
'1.123456789123456789'::float(2),
'1.123456789123456789'::float(24),
'1.123456789123456789'::float(48);
-[ RECORD 1 ]------------
float8 | 1.12345678912346
float8 | 1.12345678912346
float4 | 1.12346
float4 | 1.12346
float4 | 1.12346
float8 | 1.12345678912346
您可以使用pg_typeof
来确认类型选择。
实际上,它只是为了支持标准语法并被翻译成 PostgreSQL 的方言——通过选择适当的类型——在它被使用的地方。