• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:浮動小数点の計算について)

浮動小数点の計算について

このQ&Aのポイント
  • 浮動小数点数の計算における誤差の原因とは?
  • Javaで浮動小数点の計算を行うと誤差が生じる理由
  • 浮動小数点数の誤差を詳しく解説します

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10357)
回答No.3

浮動小数点数は、2進数で表現されているので、2のべき乗の和しか正確に表現できません。 任意の整数は2のべき乗の和で表現できるので、有効桁数の範囲では正確に表現できます。 少数部分は、1/2, 1/4, 1/8, 1/16, 1/32,....... からいくつか選んだ和であれば、有効桁数の範囲では正確に表現できます。 0.1や0.2は、2進数では無限小数になるので、有限桁で切ると必ず誤差が生じます。

その他の回答 (3)

noname#207526
noname#207526
回答No.4

簡単に説明すると、コンピュータの計算は全て『スイッチのオンとオフ』で扱われています。 つまり、いくら高速で計算しているとはいえ、結局は有限個の桁数までしか計算できず、どこかで四捨五入して表示しているのです。 もう少し的確に言えば、少数計算は負荷がかかるため、多くのコンピュータには予め、少数計算用のチップが組み込まれています。 そのチップには、少数は何bitで扱えば速く計算できるというのが決められており、その桁数までしか計算されないので、そのようなことが起こります。(これを丸め誤差といいます) 一応アルゴリズムを考えれば、何桁まででも計算できるのですが、実用的な桁数までで止めているのです。

  • FEX2053
  • ベストアンサー率37% (7991/21370)
回答No.2

一言でいえば 「0.1は2進数で表現できない」 からです。 2進数は2のn乗の組み合わせで数を表現します。 これが整数なら10のn乗の組み合わせと1対1になるんですが、 小数点以下は2の-n乗=2の1/n乗の組み合わせになります。 すなわち 2の-1乗=1/2=0.5 2の-2乗=1/4=0.25 2の-3乗=1/8=0.125 : これ、どう組み合わせても0.1にならないのは自明ですよね。 0.1と表示してても、0.1でない数字で計算するんですから、 結果がずれるのは当たり前です。 Excelは、そういう一種の「欠陥」と引き換えに、大容量の計算を 一瞬でこなすという「メリット」を得ているんですよ。

  • t_ohta
  • ベストアンサー率38% (5231/13685)
回答No.1

このあたりを読まれてみるといいかと思います。 http://pc.nikkeibp.co.jp/pc21/special/gosa/eg4.shtml

関連するQ&A

専門家に質問してみよう