文档中没有示例。https://www.postgresql.org/docs/10/datatype-numeric.html#datatype-数字表数字(精度、比例)我想用最小的空间来保存一个正数,最多是100,我需要接受0.5的十进制增量在这种情况下,我应该使用什么样的精度和比例?
bkkx9g8r1#
使用 numeric(4, 1) .这将为您提供最多4位数字(包括小数部分),保留1位小数,因此这将存储数字直到 999.9 .如果你能忍受不大于 99.9 ,那么 numeric(3, 1) 很好。
numeric(4, 1)
999.9
99.9
numeric(3, 1)
w6mmgewl2#
NUMERIC(4,1) 可以,但也可以接受小数,例如:
NUMERIC(4,1)
55.0 26.3 978.1
这是因为precision声明了一个数字所能容纳的最大位数,而scale与小数部分有关。您还需要验证您的输入。如果希望在数据库级别执行此操作,可以使用 CHECK column_name <= 100.0 . 这种检查也可以扩展到只接受带有 .0 以及 .5 小数部分(见模运算符)。
CHECK column_name <= 100.0
.0
.5
2条答案
按热度按时间bkkx9g8r1#
使用
numeric(4, 1)
.这将为您提供最多4位数字(包括小数部分),保留1位小数,因此这将存储数字直到
999.9
.如果你能忍受不大于
99.9
,那么numeric(3, 1)
很好。w6mmgewl2#
NUMERIC(4,1)
可以,但也可以接受小数,例如:这是因为precision声明了一个数字所能容纳的最大位数,而scale与小数部分有关。您还需要验证您的输入。
如果希望在数据库级别执行此操作,可以使用
CHECK column_name <= 100.0
. 这种检查也可以扩展到只接受带有.0
以及.5
小数部分(见模运算符)。