- ベストアンサー
Fortranの変数
Fortranの変数の取り扱いに関する質問です。 実数で宣言した変数に 33.3 という数字を読み込ませたのですが, そのまま書式を指定せずに書き込ませると 33.2999992 と表示されました。 これはなぜなのでしょうか。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
今日のコンピュータでは、一般に2を基数とした指数表記によって小数を表します。 指数表記というのは 2.9995 × 10^6 のような表記方法です。 この例は基数が10ですが、コンピュータは2を基数としてこれを行います。 ここで、十進数の33.3 を二進数に変換しようとすると、有限桁では表すことができません(実際にやってみてください)。 そこで精度に従って切捨てが行われます。 こうして情報が落ちてしまったものを再度変換するときに、書式指定しなかったときには 限界ぎりぎりまで変換しようとしたので 32.999... のような出力になったのです。
その他の回答 (1)
- baber
- ベストアンサー率18% (17/92)
回答No.1
コンピュータ内で実数は浮動小数点表記で現されます。 ですので、33.3は浮動小数点ではきっちりわりきれないため、33.299....のように内部的にはもつことになります。 これは、別にFORTRANに限った話ではなくコンピュータ全てに言えることです。 で、実数の有効桁数は6~7桁なので、その桁内でフォーマットして表示してやれば33.3になるはずです。 これは、電卓で、10÷3×3が10にならないのと似たような話です。
質問者
お礼
大変よくわかりました。 ありがとうございました!
お礼
なるほど!すごくよく解かりました! 本当にありがとうございました!