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

时间:2017-08-01 12:40:45

标签: postgresql column-types

我需要存储像0.0000003215218845

这样的列值

我的专栏需要什么类型?我尝试过realfloat但是当我运行一个选择查询时,我得到的值是3.21522e-07

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

2 个答案:

答案 0 :(得分:2)

请参阅postgres文档:floating-point-types。可能fixed-point-types也可以提供帮助。 但你必须意识到:

  • 该工具,您执行查询,通常不会以完整分辨率返回数据。数字可能存储正确,您必须更改格式,输出方式。
  • float和double存储为二进制,因此数据可能在存储之前被舍入。因此,如果您希望以精确的形式存储十进制数据,定点类型可能更适合您的应用程序。

答案 1 :(得分:2)

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