クイズ
公開終了

クイズ


「クイズ」のコメント

>> むぃ さん

この件に関してですが、銀行丸めなんて銀行にやらせとけばエエことやと思います。銀行に関しては、銀行丸めは有効です。でも、他の用途に関しては、銀行丸めって邪魔でしかない場合が多いです。
C#で銀行丸めをデフォルトにしたって、MSのプログラマーは絶望的にセンスが無いと思います。

【合計した時の誤差が減るって言ってるけど】
「2.5, 4.5, 2.5, 0.5」だと、合計は10なのに丸めてから合計すると四捨五入でも銀行丸めでも8なので、改善されない。
4個でなく大量の要素の場合には、確率的に誤差が減るので、銀行の場合には有効。
そもそも、丸めてから合計するって考え方が間違えてる。合計する必要性があるなら、合計してから丸めるべき。
銀行の場合には、口座毎に丸めてから合計するので、有効。

【小数点1桁までしか意味を為さない】
0.5を判定する場合ですが、2進数で
xxxx.011111111111後ろどこまでも1
xxxx.100000000000後ろどこまでも0
xxxx.1後ろのどこかで最低1個の1がある
と、上は小数点以下は0.5以下、真ん中が0.5丁度、下は0.5より上って保証があります。四捨五入も銀行丸めも話は簡単です。
小数点2桁目で、数学的(と言うよりも数値演算的)に破綻します。
「0.05」は2進数で無限少数になります。1/3は10進数で0.3333と無限少数で3進数なら0.1と有限になりますが、同様に0.05は2進数では無限小数です。0.05であるかどうかを厳密に判定するなら、メモリを埋め尽くすまで精度を上げても無理です。
銀行の場合、小数点1桁目の話なので、有効です。

元々、銀行用に設計されたSQLなら銀行丸めを採用する意義はあると思います。汎用言語に銀行丸めなんて百害あって一利なしです。
このぐらい軽く考えただけでわかる話なのに、曲がりなりにも超大手ITが仕出かすのは、、、、、