Postgres 中数字数据类型的精度和小数位数是多少?

What are precision and scale for numeric data types in Postgres?

文档中没有示例。

https://www.postgresql.org/docs/10/datatype-numeric.html#DATATYPE-NUMERIC-TABLE

NUMERIC(精度,小数位数)

我想用最小的space来保存一个最多100的正数,我需要接受0.5的小数增量

在这种情况下我应该使用什么精度和小数位数?

使用numeric(4, 1).

这最多给你 4 位数字(包括小数部分),1 位数字保留给小数,所以这将存储数字直到 999.9

如果您可以接受不大于 99.9 的数字,那么 numeric(3, 1) 就可以了。

NUMERIC(4,1) 可以,但这也接受小数,例如:

55.0
26.3
978.1

这是因为精度声明了一个数字可以容纳的最大位数,而小数位与小数部分有关。您还需要验证您的输入。

如果您希望在数据库级别执行此操作,您可以使用 CHECK column_name <= 100.0。这种检查也可以扩展为只接受带有 .0.5 小数部分的数字(参见模运算符)。