Почему psql возвращает числа с плавающей точкой только с 3 десятичными числами - PullRequest
0 голосов
/ 06 апреля 2019

Я использую psql для взаимодействия с базой данных postgresql, я выполнил свой запрос

select latitude, longitude from myschema.mytable order by longitude limit 10;

Вывод

 latitude | longitude 
----------+-----------
  1.30806 |   103.631
  1.30805 |   103.631
  1.30807 |   103.632
  1.31557 |   103.632
  1.31407 |   103.633
  1.31644 |   103.635
  1.31644 |   103.635
  1.34128 |   103.636
  1.32722 |   103.678
  1.32611 |   103.678
(10 rows)

Но когда я выполняю тот же запрос в dbeaver, я вижу

enter image description here

Типы столбцов широты и долготы: float4

Три вопроса, пожалуйста.

  1. Почему psql дает мне различное количество десятичных знаков для столбцов широты и долготы, в то время как они оба имеют float4
  2. Почему psql не показывает мне все десятичные дроби, особенно?для столбца долготы?
  3. float4 с точностью до 6-го знака после запятой, верно?

1 Ответ

0 голосов
/ 06 апреля 2019

После прочтения документа, https://www.postgresql.org/docs/9.1/datatype-numeric.html

Я думаю, что следующие пункты объясняют поведение.

  • Масштаб числа - это количество десятичных цифр в дробной части справа от десятичной точки.
  • Числовое значение - это общее количество значащих цифр во всем числе, то есть количество цифр по обеим сторонам десятичной точки.
  • На большинстве платформ реальный (4 байта, я полагаю, это float4) тип имеет диапазон от 1E-37 до 1E + 37 с точностью не менее 6 десятичных цифр .
  • Тип двойной точности (8 байт, float8) обычно имеет диапазон от 1E-307 до 1E + 308 с точностью не менее 15 цифр.

Так что для float4 типа столбца, я думаю, что после 6-й цифры может быть ненадежным.

...