为什么我的 PostgreSQL "real" 数据被四舍五入?

Why are my PostgreSQL "real" data being rounded?

我有一个 table,其中一个名为 total 的列具有 real 数据类型。

但是我发现当我查询它的值时,这个列被四舍五入了,如下所示:

SELECT total FROM data WHERE id='xe54g';
 total 
---------
  105861

UPDATE data SET total=105860.5 WHERE id='xe54g';        
UPDATE 1

SELECT total FROM data WHERE id='xe54g';
 total 
---------
  105860

UPDATE data SET total=105860.7 WHERE id='xe54g';        
UPDATE 1

SELECT total FROM data WHERE id='xe54g';
 total 
---------
  105861

\d+ data
   Column  |  Type | Collation | Nullable |  Default  | Storage  | Stats target | Description 
-----------+-------+-----------+----------+-----------+----------+--------------+-------------
 total     | real  |           |          | 0         | plain    |              | 

如何达到 return 的完全精度?我正在使用 PG 11.1。

您可以通过设置

获得完整的精度
extra_float_digits = 3

然后 PostgreSQL 也会显示可能包含舍入错误的十进制数字。

请注意 real 的有效数字位数较少。如果你使用 double precision.

你会更开心