• 締切済み

EXCELの小数計算について

EXCEL97で小数計算をすると誤差がでるのですが何故ですか? A列に14.60を数値入力  B列に13.90を数値入力  C列に=B1-A1の数式をいれると-0.70となるはずなのにどういうわけか -0.699999999999999と表示される。 小数点以下14桁目までは-0.70000000000000と表示されるが15桁目で上記のように表示される。 表面上はROUND関数などで処理できるのですが複数の数式を組み合わせて計算している時は-0.69999・・・の数値をもって計算される場合があり誤差がでる。 消費税や金利計算などで1円でも誤差がでると表計算の正確さが問われてしまう。 0.7の他にも 次の場合もでる 0.2のとき0.1999・・ 0.3のとき0.2999・・・・ 0.8のとき0.7999・・・・ これはEXCELのバグなのでしょうか?

みんなの回答

  • kbonb
  • ベストアンサー率51% (254/492)
回答No.2

こんにちは  以下のページもご参考になるのでは? Housaka's Home Page-エクセル奇譚 http://member.nifty.ne.jp/housaka/kitan01.html Housaka's Home Page-エクセル奇譚 ~ 誤差アラカルト ~ http://member.nifty.ne.jp/housaka/kitan011.html [XL97] 浮動小数点数値演算の結果に含まれる丸め誤差について http://www.microsoft.com/japan/support/kb/articles/J042/5/26.htm [XL97] 数値を比較した結果が正しく返らないケースについて http://www.microsoft.com/japan/support/kb/articles/J042/5/24.htm [XL97] 特定の小数部を持つ数値を入力した場合に誤差を生じる http://www.microsoft.com/japan/support/kb/articles/J042/5/25.htm [XL] 浮動小数点の計算誤差と IEEE フォ-マット http://www.microsoft.com/japan/support/kb/articles/J013/9/67.htm ROUND関数の結果を正常にするには? http://cgi.fuji.ne.jp/~fj2094/cgi-bin2/wwwlng.cgi?print+200009/00090045.txt 四捨五入するには http://cgi.fuji.ne.jp/~fj2094/cgi-bin1/wwwlng.cgi?print+200005/00050122.txt 入力規則が正しく判定されないんです http://cgi.fuji.ne.jp/~fj2094/cgi-bin1/wwwlng.cgi?print+200012/00120088.txt 計算結果がセルの表示と異なるのは? http://www.moug.net/boards/exopr/questbbs.cgi?ShowTopic=./logfiles/200009/00090086.txt

参考URL:
http://www2.odn.ne.jp/excel/
  • shigatsu
  • ベストアンサー率26% (511/1924)
回答No.1

これはEXCELに限らずパソコンで小数点の計算をするときには避けられない部分 ですね。 有効桁数を設定して計算するしかないでしょうね。小数点以下15桁使うような計算 は別の手段を使うべきだと思います。 EXCELのヘルプで「ワークシートとブックの仕様」というページを探してくださ い。様々な制限事項が書かれています。

hiro_cp
質問者

補足

ありがとうございました。EXCELのヘルプで「ワークシートとブックの仕様」を見てみました。いろいろな情報がありヘルプにこんなにたくさんの項目があるとは知りませんでした。 質問には小数点以下15桁の表現をしましたが実際小数点以下15桁使うような計算はしていません。 14.60-13.90=0.70は常に小数点以下3桁目を切り捨てるrounddown関数を使用していて0.69の表示がされたので計算違いが出ていると気が付いたのです。どうして0.70の表示にならなかったのか不思議に思い質問しました。 パソコンで小数点の計算をするときには避けられない部分では仕方ないですね

関連するQ&A