• ベストアンサー

2進数と10進数の関係について

浮動小数点で表現されている10進数の0.1を 2進数に変換すると循環小数となります。 これを単純にまた10進数に変換すると 永遠に0.1とはならないと思うのですが、 なぜ、2進数の(0.00011001100110011…)が EXCEL等のアプリケーションで人間の目に見える形で は10進数の(0.1)となっているのでしょうか? IEEEの規格の仕様となにか関係があるのでしょうか?

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

  • ベストアンサー
  • Dick
  • ベストアンサー率26% (9/34)
回答No.1

IEEE 規格とは関係ありません.Excel の場合は適当な桁数(多分表示桁の一つ下)で丸めてるだけです.

noname#420
質問者

補足

回答ありがとうございます。 この丸めは、切り上げなのでしょうか、 四捨五入なのでしょうか、 また、表示桁の1つ下を丸めることで もとの10進数表現に近いものになるので しょうか、教えて下さい。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • kaz-a
  • ベストアンサー率27% (132/480)
回答No.3

丸め誤差についてサポート技術情報がありましたので引用しておきます。IEEEとの関係と言えばこれでしょう。

参考URL:
http://www.microsoft.com/JAPAN/support/kb/articles/J042/5/26.htm?LN=JA&SD=SO&FR=0
noname#420
質問者

お礼

わざわざサポート技術情報のURLありがとうございます

すると、全ての回答が全文表示されます。
  • sagano
  • ベストアンサー率54% (12/22)
回答No.2

Excelの内部の扱いにはあまり詳しくないのですが…。 119さんの"浮動小数点"という言葉が実はキーになっています。浮動小数点というのはいわゆる指数表示です。 つまり整数部分と、その数字の一番下の桁が小数点以下あるいは小数点以上第何位にあるのかを分けて記憶してると考えてください(小数点の位置が動くので浮動小数点ですね)。 0.1 という数字は、1 * 10^-1(10のマイナス1乗)と表現できます。これですと、割り切れないということはありませんよね。 最後の最後はDickさんが言うとおりどこかで丸めることになりますが、かなり大きな数や小さな数まで正確に表現することができます。 ちなみに、0.0000001とセルに書いてみてください。1E-07と表示されると思います。これが 1 * 10^-7 という意味を表しています。

noname#420
質問者

お礼

わかりやすい浮動小数点の説明ありがとうございます

すると、全ての回答が全文表示されます。

関連するQ&A