10 進数の列にお金を保存する: 精度とスケールに関する考慮事項
データベース設計者は、10 進数の適切な精度とスケールを選択するというジレンマに直面することがよくあります。通貨の値を格納するために使用される列。この記事では、関連する考慮事項を検討し、さまざまなシナリオの最適な値についての洞察を提供します。
効率的なストレージのための精度とスケール
固定幅の char 列は効率を提供する可能性がありますが、利点がある一方で、10 進数列にも利点があります。ただし、精度とスケールが低いほどストレージの効率が高いとは限りません。
推奨される精度とスケール
一般的に使用する場合は、DECIMAL(19, 4) が一般的に受け入れられている選択です。これは、VBA/Access/Jet の履歴データ型と、カスタム丸めアルゴリズムを可能にする銀行家の丸めをサポートする必要性から生じています。
過剰か不十分ですか?
DECIMAL(24,8) は、ほとんどの通貨が小数点以下 4 桁または 5 桁で引用されているため、ほとんどの通貨アプリケーションにとって過剰に見えるかもしれません。拡張精度が必要なシナリオでは、より広範囲の値を処理できる浮動小数点型を代わりに検討することをお勧めします。
会計ルールと考慮事項
正確さとコンプライアンスを確保するには、分野の専門家や会計基準に相談することが重要です。管轄区域によっては、金額の四捨五入や精度に関して特定の規制がある場合があります。たとえば、EU の州内転送では、ストレージに DECIMAL(p,6) の使用が指示される場合があります。
SQL Server の MONEY データ型を避ける
MONEY データ型SQL Server には、精度と丸めに関する既知の問題があります。代わりに、精度と移植性を最適化するために DECIMAL データ型を使用することをお勧めします。
銀行家の丸めに関する歴史的背景
銀行家の丸めは、コンピューティングで広く使用されています。 IEEE 標準に組み込まれており、数学者に好まれています。これは「コンピューターのルール」と呼ばれることが多く、その起源は人間の計算実践にあります。
以上が10 進数の列にお金を保管するにはどのような精度とスケールを使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。