2012-06-08 15 views
12

この質問は過去に何度も聞かれましたが、私はその話題に関して矛盾した意見を見つけましたので、もっと統一された結論を期待して再度考えていきたいと思いました。MySQLデータベースに通貨の値を格納する

私のデータベースに通貨の価値を保存したいと思います。すべてのエントリが同じタイプの通貨(たとえばUSD)で、正と負の両方の値が許可されているとします。

私の最初の考えは、関連する通貨の最小単位で符号付き整数として値を格納することです。たとえば、値$ 1.25を保存する場合は、USDの最小単位が$ 0.01なので125をデータベースに挿入します。このメソッドの良い点は、MySQLが自動的に最も近い整数に丸めることです。たとえば、ドルの値が$ 1.259の場合、125.9を挿入すると、自動的に四捨五入され、126または$ 1.26として保存されます。

あなたはどう思いますか?これは健全なアプローチですか、それとも良い方法ですか?

+1

'DECIMAL(p、s)' http://dev.mysql.com/doc/refman/5.5/en/fixed-point-types.html – DavidO

+0

ああ、それはずっと意味があります。番号を表示する前に100で割る必要はありません。ありがとう! –

答えて

13

財務データは、DECIMAL(p,s)として格納できます。ここで、pは有効桁数、sはスケール(小数点以下の桁数)です。 The MySQL documentationを参照してください。 O'ReillyのHigh Performance MySQLからも

、第3章:

「...あなたは 小数の正確な結果が必要な場合にのみ、DECIMALを使用する必要があります - 例えば、財務データを格納するとき。」 O'ReillyのLearning MySQLから

DECIMALは、ある

"...一般的に使用される数値型店舗など給与や距離などの固定小数点 数...。"

そしてMySQL Pocket Reference

DECIMAL」...サント金額のように、精度が である浮動小数点数を返します。

2

あなたが説明しているアプローチに間違いはありません。この質問には、正解も間違いもありません。

$値をユーザーに表示するには、除算操作や何らかの書式設定を行う必要があります。

すべてがセントまたはドルであれば、数式/計算をデバッグする方が簡単でしょうか?値をセントまたはドルで表示しますか?

シンプルにしておきますが、いずれにせよ小数点を使用する必要があります。

+1

実際には精度が必要な場合は、政府税などに必要な分数を失うため、intとして格納することはできません。 – Alan

関連する問題