4

我有一个 postgresql 数据库,并将其用于处理货币价值的项目。我的问题是:如何将 postgresql 表中的双精度或 float8 类型列的小数位数限制为两位?

4

1 回答 1

16

只需使用Decimal( Numeric) 类型,如手册中所述,例如cost decimal(10,2).

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

在我看来,当您处理货币或其他与货币相关的值时,没有必要使用浮点数。我不知道这两种类型之间的性能比较,但Decimal有一个优点 - 它是一个精确的数字(浮点通常不是这种情况)。我还建议阅读有关该主题的有趣但简短的讨论

于 2012-06-20T05:35:42.887 回答