为什么我的 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
.
你会更开心
我有一个 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
.