プロが教えるわが家の防犯対策術!

なぜ同じ実数型は整数型よりも広い範囲を表現できるのですか?

素朴な疑問です。
整数型が表現できる範囲は単純で理解できるのですが、それだけに
実数型が同じ情報量(バイト数)でさらに広い範囲の数を表現できるのはなぜでしょう?

仮数部や指数部の数字を掛けたり足したりするだけで
全ての数をきっちり作れるというのはにわかには信じられません。

もしかして近似値を使っているのでしょうか?(0.099→0.1のように)

A 回答 (2件)

実数型がその表現範囲において「全ての数をきっちり作れる」わけではありません。


有効桁数というものがあり、その桁数を越えた部分に関しては、保障されません。

> もしかして近似値を使っているのでしょうか?(0.099→0.1のように)

そこまでひどくはありませんが、0.999999999999999999999999999999999999という数値が1.0になってしまったりします。

この回答への補足

正直、お二人共にベストアンサーを差し上げたいのですが、どちらか選ばなければいけないので回答の早かった方にします。

補足日時:2010/10/31 20:43
    • good
    • 0
この回答へのお礼

ありがとうございます。

>実数型がその表現範囲において「全ての数をきっちり作れる」わけではありません。
モヤモヤがスッキリしました。

もし有効桁数が7桁だったら
1.0000003~や0.9999997~を作って1.000000として扱うようなものでしょうか。

お礼日時:2010/10/30 01:35

同じバイト数なら、実数型は精度というか有効数字が落ちます。


http://ja.wikipedia.org/wiki/%E6%B5%AE%E5%8B%95% …

例えば、単精度で指数部が2の100乗なら、下の方の桁(2^0,2^1等)は仮数で表現できません。


これとは別の話で、有限の10進法の小数の全てを、有限の2進法の小数で表わすことができないため、誤差が生じます。
例えば、10進法の0.1は二進法では循環小数となるため、有限桁の2進法にするさいに誤差ができます。

この回答への補足

正直、お二人共にベストアンサーを差し上げたいのですが、どちらか選ばなければいけないので回答の早かった方にします。

補足日時:2010/10/31 20:43
    • good
    • 0
この回答へのお礼

詳しい解説をありがとうございます。

>同じバイト数なら、実数型は精度というか有効数字が落ちます。
なるほど。例えば32bitで正の数だと整数型は9桁まで表現できるのに
浮動小数点型は7桁までしか有効でないですね。

>例えば、単精度で指数部が2の100乗なら、下の方の桁(2^0,2^1等)は仮数で表現できません。
こうして具体例をあげてもらえてわかりやすかったです。

>これとは別の話で、有限の10進法の小数の全てを、有限の2進法の小数で表わすことができないため、誤差が生じます。
>例えば、10進法の0.1は二進法では循環小数となるため、有限桁の2進法にするさいに誤差ができます。
固定小数点数では0.1が表現できないのは聞いたことがあるんですが(←情報処理試験の問題だったかも)
浮動小数点数はもしかして表現できるのかな?などと思ってました。

お礼日時:2010/10/30 01:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!