Postgres 列类型,用于存储具有许多小数的数字



我需要在列中存储值,例如0.0000003215218845

我的列需要是什么类型?我尝试让它realfloat但是当我运行选择查询时,我得到的值是3.21522e-07

我的列需要什么类型才能使选择查询完全返回0.0000003215218845值?

如果要控制如何将浮点数转换为字符串,请使用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

请参阅postgres文档:数字类型v.9或数字v.11。 可能会有所帮助。 但你必须知道:

  • 用于执行查询的工具通常不会以完整分辨率返回数据。数字可能存储正确,您可能必须更改格式,如何输出它。
  • 浮点型和双精度型存储为二进制,因此数据在存储之前可能会四舍五入。因此,如果要以确切的形式存储十进制数据,定点类型可能更适合您的应用程序。

最新更新