BigDecimal是Java的正确数据类型,如果要记录金钱数据,pgsql最好不要用money字段,而是用numeric字段,因为money字段超过1000会有样式变化,类似于1,000
基本上,money有(非常有限的)用途。在Postgres的维基建议将在很大程度上避免它,除了那些狭义的案件。超过的优势numeric是性能。
decimal只是numericPostgres中的别名,并且广泛用于货币数据,是“任意精度”类型。手册:
该类型
numeric可以存储数量非常大的数字。特别建议在需要精确度的情况下存储货币金额和其他数量。
就个人而言,integer如果小数美分永远不会出现(通常在赚钱的地方),我喜欢将货币存储为代表美分的货币。这比任何其他提到的选项都更有效。
参考:
sql - Which datatype should be used for currency? - Stack Overflow
本文讨论了在Java中使用BigDecimal处理金钱数据的优劣,以及Postgres中money和numeric字段的区别。建议在精度要求高时选择numeric,特别是在不涉及小数美分的场景下,使用表示美分的integer类型更为高效。
2009





