我应该使用什么 PostgreSQL 列类型来存储 Java BigDecimal?
问问题
37980 次
3 回答
33
请参阅PostgreSQL 数据类型- 可能是Numeric,它可以充当任意精度类型(这是 PostgreSQL 扩展)。
...没有任何精度或比例创建一个列,其中可以存储任何精度和比例的数值,直到精度的实现限制。
不过,我并不完全确定“精度的实施限制”是什么。从未尝试过非常大的数字。如果达到限制,则可以回退text
。但是,我怀疑在那之前还会有其他重要问题 ;-) 如果您希望存储更少,则指定精度和/或比例为numeric
.
正如 sjr 指出的那样编辑,限制是 1000 个十进制数字的精度(来自同一个链接):
numeric 类型可以存储高达 1000 位精度的数字 [在当前的实现中] 并精确地执行计算。特别推荐用于存储货币数量和其他需要精确性的数量...
如果需要更高的精度 - 尽管手头有更大的问题 - 那么数字列将不适合(单独)。但这实际上更像是一个非常极端的“假设”,并且可能不会起到限制作用。
于 2011-01-10T04:07:17.007 回答
8
只需将 Java 映射用于常见的 SQL 数据类型。在这种情况下,您可以使用 NUMERIC 或 DECIMAL。
于 2011-01-10T07:27:53.397 回答
0
我会使用decimal
添加自己的比例和精度:
t.decimal "price", precision: 12, scale: 4, default: "0.0"
于 2020-09-02T07:22:34.667 回答