为什么 psql return float4 数字只有 3 位小数

Why does psql return float4 numbers with only 3 decimals

我正在使用 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 中执行相同的查询时,我看到了

纬度和经度的列类型都是float4

请问三个问题。

  1. 为什么 psql 为纬度和经度列提供不同的小数位数,而它们都是 float4
  2. 为什么 psql 不显示所有小数,特别是。对于经度列?
  3. float4 精确到小数点后 6 位,对吗?

仔细阅读文档后,https://www.postgresql.org/docs/9.1/datatype-numeric.html

我认为以下几点可以解释这些行为。

  • 一个数字的scale是小数部分小数点右边的小数位数。
  • 一个数值的精度是整数中有效位数的总数,即小数点两边的位数。
  • 在大多数平台上,真实(4 个字节,我想是 float4)类型的范围至少为 1E-37 到 1E+37,精度至少为 6 位十进制数字
  • 双精度(8 字节,float8)类型的范围通常在 1E-307 到 1E+308 之间,精度至少为 15 位。

所以对于float4列类型,我认为第6位之后的内容可能不可靠。