为什么 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
请问三个问题。
- 为什么 psql 为纬度和经度列提供不同的小数位数,而它们都是 float4
- 为什么 psql 不显示所有小数,特别是。对于经度列?
- 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位之后的内容可能不可靠。
我正在使用 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
请问三个问题。
- 为什么 psql 为纬度和经度列提供不同的小数位数,而它们都是 float4
- 为什么 psql 不显示所有小数,特别是。对于经度列?
- 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位之后的内容可能不可靠。