在postgresql中限制Double Precision或float8类型的十进制数字

时间:2012-06-20 05:27:11

标签: database postgresql floating-point precision

我有一个postgresql数据库,并将其用于处理货币价值的项目。我的问题是: 如何在postgresql表中将Double Precision或float8类型的列的十进制数限制为2?

1 个答案:

答案 0 :(得分:14)

只需使用DecimalNumeric)类型,而不是documented in the manual,例如cost decimal(10,2)

第一个数字(10)定义数字的总长度(所有数字,包括小数点后的数字),而第二个数字(2)表示其中有多少数字是小数点。上述声明为您提供了8位数字。当然,你可以增加它 - Numeric类型的限制要高得多。

在我看来,当您处理货币或其他与货币相关的价值时,无需使用浮点数。我不知道这两种类型之间的性能比较,但Decimal有一个优点 - 它是一个确切的数字(浮点数通常不是这种情况)。我还建议您阅读interesting, but short discussion on the topic