小数点以下の計算結果が正しくないときの処置

まず、下の画像をご覧ください。

送信者 OpenOffice
このサンプルファイルは、calc122.odsをダウンロードしてください。

全てのセルで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回 演算誤差の正体・・・こんな記事も見つけました。

この記事をクリップ!