用于存储多位小数的 Postgres 列类型
Postgres column type for storing numbers with many decimals
我需要在列中存储值,如 0.0000003215218845
我的专栏需要什么类型?我试过 real
或 float
但是当我 运行 一个 select 查询时,我得到的值是 3.21522e-07
我的列需要什么类型才能使 select 查询完全 return 0.0000003215218845
值?
参见 postgres 文档:numeric-types v.9 or numeric v.11。有帮助。
但你必须知道:
- 您用来查询的工具通常不会 return 数据的全分辨率。数字可能存储正确,您可能必须更改格式和输出方式。
- float 和 double 以二进制形式存储,因此数据在存储前可能会被四舍五入。因此,如果您想以精确的形式存储十进制数据,定点类型可能更适合您的应用程序。
如果要控制浮点数转换为字符串的方式,请使用to_char
函数:
SELECT 0.0000003215218845::double precision;
float8
-----------------
3.215218845e-07
(1 row)
SELECT to_char(0.0000003215218845::double precision,
'FM90.9999999999999999');
to_char
------------------
0.00000032152188
(1 row)
数值的差异是舍入误差。
对任意精度的值使用 numeric
。
我需要在列中存储值,如 0.0000003215218845
我的专栏需要什么类型?我试过 real
或 float
但是当我 运行 一个 select 查询时,我得到的值是 3.21522e-07
我的列需要什么类型才能使 select 查询完全 return 0.0000003215218845
值?
参见 postgres 文档:numeric-types v.9 or numeric v.11。有帮助。 但你必须知道:
- 您用来查询的工具通常不会 return 数据的全分辨率。数字可能存储正确,您可能必须更改格式和输出方式。
- float 和 double 以二进制形式存储,因此数据在存储前可能会被四舍五入。因此,如果您想以精确的形式存储十进制数据,定点类型可能更适合您的应用程序。
如果要控制浮点数转换为字符串的方式,请使用to_char
函数:
SELECT 0.0000003215218845::double precision;
float8
-----------------
3.215218845e-07
(1 row)
SELECT to_char(0.0000003215218845::double precision,
'FM90.9999999999999999');
to_char
------------------
0.00000032152188
(1 row)
数值的差异是舍入误差。
对任意精度的值使用 numeric
。