四捨五入基準 - 財務計算
-
27-09-2019 - |
質問
財務データの計算に関して「四捨五入」基準の存在に興味があります。私の最初の考えは、データがユーザーに表示されるとき (プレゼンテーション層) にのみ丸めを実行することです。
「丸められた」データがその後の計算に使用される場合、「丸められた」数値と「生の」数値のどちらを使用する必要がありますか?誰かアドバイスはありますか?
私はさまざまな丸め方法を知っていることに注意してください。バンカーズラウンドなど
解決
最初の、そして最も重要なルール:使用A 小数点データ・タイプに、決してバイナリ浮動小数点型
正確に丸めを行うべきであるは、このようなユーロとの間の変換のような規制によって強制することができます国家の通貨は、それが置き換えを。
そのようなルールが存在しない場合は、、私は、高精度ですべての計算を行い、ラウンドのみのプレゼンテーションのために、すなわち、更なる計算のために丸めた値を使用していないと思います。これが最良の全体的な精度が得られるはずです。
他のヒント
私が働いている金融ソフトウェア会社のグレイビアード メインフレーム プログラマに尋ねたところ、よく知られた標準はなく、プログラマの慣例に頼っていると彼は言いました。
統計学者は少なくとも 1906 年から四捨五入の問題を認識していましたが、それを裏付ける財務基準を見つけるのは困難です。
によると この座るe、「欧州委員会報告書」 ユーロの導入と通貨額の四捨五入 これまで銀行業務における丸めに対する標準的なアプローチが存在しなかったことを示唆しています。」
一般に、どの基数 (基数 2 または基数 10) で作業しているかに関係なく、対称丸めモードを使用します。
これにより、計算中の系統的な偏りが回避されます。
このようなモードは Round-Half-To-Even であり、「バンカー丸め」としても知られています。
丸めモードや切り捨てモードなど、数値コンテキストを明示的に指定できる言語ツールを使用します。たとえば、Python の decimal
モジュール。C ライブラリによって行われる暗黙的な仮定は、計算には適切ではない可能性があります。
アイブ氏「それらすべてを支配する一つの標準」の存在を見ていない - そこに丸め規則の任意の数は(あなたが参照したもの)であり、彼らは(業界/顧客/及び通貨コードに基づいて、遊びに来ているように見えます http://en.wikipedia.org/wiki/ISO_4217する) - 誰もが2ヶ所を使用していますので、小数点の後に、問題はさらに複雑になります。一日の終わりには、あなたの顧客は、彼らが実装するルールを指定する必要があります...
プログラマーの指針としても、法廷での弁護としても、これに関する明確な基準がないのはもどかしいことです。給与計算で最も近い値に「定期的に」四捨五入するだけで、ところどころで給与が数ペニー不足する可能性があり、労働弁護士はこれを食い物にします。
基本給は小数点第 2 位までしか指定されていない可能性がありますが (「時給 22.71 ドルで雇われます」)、混合残業代 (期間内の複数の給与率を平均して決定されます) などは、最終的には実効時給となります。 23.37183475 ドル/時間。
その場合の残業代はどうやって支払うのですか?
15 hours x 23.37183475 x 1.5 = $525.87 rounded from $525.86628187
15 hours x 23.37 x 1.5 = $525.82
なぜ私のクライアントから 5 セントを盗んだのですか? 残念ながら、これは冗談ではありません。
完全な精度値で計算し、切り捨てられたバージョンを表示すると、さらに不快になります。上記の最初の計算を実行しますが、給与明細には 23.37 ドルの料金のみが表示されます。
給与明細の計算は一銭にも結びつかないので、今度はそれを説明しなければなりませんが、たとえそれが従業員に有利だったとしても、労働弁護士が水の中の血の匂いを嗅ぎ、別の従業員を探し始めるだけで十分な場合があります。もの。
1 つのアプローチは、自然な方向ではなく、常に従業員に有利な方向に四捨五入することです。そのため、組織的な賃金窃盗の告発は決してあり得ません。
スケール整数を使用することを検討します。
つまり、ペニーの整数の代わりに、ドルの小数を格納します。