Почему мои «реальные» данные PostgreSQL округляются? - PullRequest
0 голосов
/ 28 мая 2019

У меня есть таблица со столбцом с именем 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    |              | 

Как мне заставить его вернуть полную точность? Я использую PG 11.1.

1 Ответ

1 голос
/ 28 мая 2019

Вы можете получить полную точность, установив

extra_float_digits = 3

Тогда PostgreSQL также отобразит десятичные цифры, которые могут содержать ошибки округления.

Обратите внимание, что real имеет небольшое число значащихцифры.Вы были бы счастливее, если бы использовали double precision.

...