3

私は db2 9.7 Express-C で Delphi 2010 を使用しており、通貨値を操作するための 10 進数型のフィールドがいくつかあるデータベースがあります。フロントエンドで 9.20 の値が 9.19999980926514 の値を表示するなど、いくつかの問題があることがわかりました。データベース内のすべてのフィールドを DECFLOAT に変更する必要がありますか、またはそれを解決するための関数、tfield のプロパティ、またはその他の代替手段がありますか?

ありがとう。デイビス

4

1 に答える 1

3

通貨の小数を直接操作することは、ほとんど常に問題になります。データベースからフロントエンド アプリケーションへのさまざまな変換により、損失または利益が発生する可能性があります (これはほとんどの金融システムにも当てはまります -バンカーの丸めを参照してください)。


操作/表示などを行う前にRoundTo関数を使用することをお勧めします。丸めに関する非常に優れた記事http://docwiki.embarcadero.com/RADStudio/XE2/en/Floating-Point_Rounding_Issues

もう 1 つの提案は、Currencyタイプを使用することです。これは、このタイプについての適切な説明を含む SO に関する質問です。Delphi で通貨の値を比較するときに丸めの問題を回避するにはどうすればよいですか?

于 2012-05-06T22:16:09.253 に答える