Java BigDecimalを格納するためにどのPostgreSQL列タイプを使用する必要がありますか?
3 に答える
PostgreSQLデータ型(おそらく数値)を参照してください。これは、任意精度の型として機能します(これはPostgreSQL拡張機能です)。
...精度やスケールがない場合、実装の精度の制限まで、任意の精度とスケールの数値を格納できる列が作成されます。
しかし、「精度の実装限界」が何であるかは完全にはわかりません。本当に大きな数を試したことがありません。制限に達した場合、へのフォールバックtext
が可能です。しかし、それまでに他にも重大な問題があると思います;-)保管量を減らしたい場合は、精度やスケールをに指定してnumeric
ください。
sjrが指摘したように編集します。制限は、(同じリンクからの)小数点以下1000桁の精度です。
数値型は、[現在の実装では]最大1000桁の精度で数値を格納し、正確に計算を実行できます。正確さが要求される金額やその他の量を保存する場合に特にお勧めします...
より高い精度が必要な場合(手元にはるかに大きな問題があるにもかかわらず)、数値列は(それ自体では)適切ではありません。しかし、これは実際には非常に極端な「もしも」であり、制限的な役割を果たさない可能性があります。
一般的なSQLデータ型にはJavaマッピングを使用するだけです。この場合、NUMERICまたはDECIMALを使用できます。
私はdecimal
自分のスケールと精度を追加することを使用します:
t.decimal "price", precision: 12, scale: 4, default: "0.0"