小数点以下の計算結果が正しくないときの処置
まず、下の画像をご覧ください。
送信者 OpenOffice |
全てのセルで1.2-1.1を計算しています。
小数点以下の表示桁数を書式設定で変えているだけです。が、DとE列は16桁表示辺りから表示されている結果がおかしくなっています。
この原因について、マイクロソフトが答えるExcel Q & A集から書きます。丸写しです。ごめんなさい。
- ExcelではIEEE754の浮動小数点に関する規格に則り数値を2進数で計算している。そのなかで期待通りの値に変換できず、誤差を生じることがある
- 桁数が大きくない場合でも、特定の小数において2進数では無限桁数の循環小数に変換されてしまうことがある
のだそうです。
マイクロソフトが答えるMicrosoft Office Excel Q & A集
2003/2002/2000対応
2005年12月5日初版発行
日経BPソフトプレス
OpenOfficeでもまったく同じ原因なのか、わかりませんが、似たようなものではないかと、勝手に推測。OpenOfficeのプロジェクトの方、間違ってたらお教えください。
対策:
この現象を、回避するために、ROUND関数で計算結果をROUND関数で四捨五入して丸めこむことで、誤差を限りなく小さくすることができる
のだそうです。
対策どおりに処理したのがF列です。
全てのセルで正しい結果が得られました!!!
計算する前に、それぞれの数値をROUND関数で丸めたのがE列ですが、まったく効果はないようです。
第4回 演算誤差の正体・・・こんな記事も見つけました。