PostgreSQL 中的 Float 是否有可能最多保留 3 位小数?

Is it possible to get up to 3 decimal places in Float in PostgreSQL?

我在 PostgreSQL 中有一个 table,它有一个 Float 列。在我的 select 中,我在该列上使用 AVG() ,所以它经常给出一个有很多小数的数字。有什么方法可以限制小数位数最多为3,意思是可以少但不多于3。

这是查询:

SELECT team, AVG(score) FROM team_score_table GROUP BY team

您可以使用 round():

select round(val::numeric, 3)

您也可以转换为数字,但您需要适合您的值的精度:

select val::numeric(20, 3)

我实际上更喜欢显式 cast(),因为它将列的数据类型设置为具有显式比例的 numeric——这样下游应用程序就知道小数位数结果。

round() returns 一个 numeric 值,但它是一个“通用”数字,没有指定的比例和精度。

您可以在 this example 中看到差异。

您可以使用几个函数来做到这一点:

SELECT round(42.43666, 2) -- 42.44

SELECT trunc(42.43666, 2) -- 42.43

或演员:

SELECT cast(42.43666 as numeric(20, 2)) -- 42.44

根据你的例子应该是:

SELECT team, round(AVG(score)::numeric, 2) FROM team_score_table GROUP BY team

SELECT team, trunc(AVG(score)::numeric, 2) FROM team_score_table GROUP BY team

SELECT team, cast(AVG(score) as numeric(20,2)) FROM team_score_table GROUP BY team