• ベストアンサー

Fortranの変数

Fortranの変数の取り扱いに関する質問です。 実数で宣言した変数に 33.3 という数字を読み込ませたのですが, そのまま書式を指定せずに書き込ませると 33.2999992 と表示されました。 これはなぜなのでしょうか。

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

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

今日のコンピュータでは、一般に2を基数とした指数表記によって小数を表します。 指数表記というのは 2.9995 × 10^6 のような表記方法です。 この例は基数が10ですが、コンピュータは2を基数としてこれを行います。 ここで、十進数の33.3 を二進数に変換しようとすると、有限桁では表すことができません(実際にやってみてください)。 そこで精度に従って切捨てが行われます。 こうして情報が落ちてしまったものを再度変換するときに、書式指定しなかったときには 限界ぎりぎりまで変換しようとしたので 32.999... のような出力になったのです。

参考URL:
http://ja.wikipedia.org/wiki/%E6%B5%AE%E5%8B%95%E5%B0%8F%E6%95%B0%E7%82%B9%E6%95%B0
fumham
質問者

お礼

なるほど!すごくよく解かりました! 本当にありがとうございました!

その他の回答 (1)

  • baber
  • ベストアンサー率18% (17/92)
回答No.1

コンピュータ内で実数は浮動小数点表記で現されます。 ですので、33.3は浮動小数点ではきっちりわりきれないため、33.299....のように内部的にはもつことになります。 これは、別にFORTRANに限った話ではなくコンピュータ全てに言えることです。 で、実数の有効桁数は6~7桁なので、その桁内でフォーマットして表示してやれば33.3になるはずです。 これは、電卓で、10÷3×3が10にならないのと似たような話です。

fumham
質問者

お礼

大変よくわかりました。 ありがとうございました!

関連するQ&A