Postgres 中数字数据类型的精度和小数位数是多少?
Posted
技术标签:
【中文标题】Postgres 中数字数据类型的精度和小数位数是多少?【英文标题】:What are precision and scale for numeric data types in Postgres? 【发布时间】:2020-09-09 21:14:36 【问题描述】:文档没有示例。
https://www.postgresql.org/docs/10/datatype-numeric.html#DATATYPE-NUMERIC-TABLE
NUMERIC(精度、比例)
我想使用最小的空间来保存一个最多为 100 的正数,并且我需要接受 0.5 的小数增量
在这种情况下我应该使用什么精度和比例?
【问题讨论】:
【参考方案1】:使用numeric(4, 1)
。
这为您提供最多 4 位数字(包括小数部分),为小数保留 1 位数字,因此这将存储数字直到 999.9
。
如果您可以接受不大于99.9
的数字,那么numeric(3, 1)
就可以了。
【讨论】:
谢谢!所以精度是位数,比例是小数位数。 @ZachG:是的,完全正确。【参考方案2】:NUMERIC(4,1)
可以,但这也可以接受小数,例如:
55.0
26.3
978.1
这是因为精度声明了一个数字可以容纳的最大位数,并且比例与小数部分有关。您还需要验证您的输入。
如果您希望在数据库级别执行此操作,您可以使用CHECK column_name <= 100.0
。这种检查也可以扩展到只接受带有.0
和.5
小数部分的数字(参见模运算符)。
【讨论】:
以上是关于Postgres 中数字数据类型的精度和小数位数是多少?的主要内容,如果未能解决你的问题,请参考以下文章