- 締切済み
Fortranのプログラムの出力について
今,流体の解析のプログラムをしています.そこでファイルに出力しているのですが,いきなり値が「+++++」となります.これはどういう意味なのでしょうか?詳しい方お教えください.お願いします. ちなみに,プログラムの方法がsimple法で,timestepがある程度いくと+++++となります.発散してなるのではなく,いきなり+++++となります. もうにっちもさっちもいかなくて困ってます!お願いします!
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- asuca
- ベストアンサー率47% (11786/24626)
>そのtimestepまでは1.0D-8ぐらいの値なのに突如として次のtimestepでは1.0D+308を超えるということはあるのでしょうか? 変数自体はちゃんと値に収まっていてもPRINT分のところで桁が足りなくなったとかどこかで0でのわり算が発生してそれをかけたりしておかしくなっているとかはないですか?
- asuca
- ベストアンサー率47% (11786/24626)
オーバーフローというのは取り扱える数値範囲から超えたときのことをいいます。 実数(標準4バイト、単精度浮動小数点) 有効数字7桁、絶対値の範囲は1.175494E-38~3.402823E+38 実数(8バイト、倍精度浮動小数点) 有効数字16桁、絶対値の範囲は2.225074D-308~1.797693D+308 ですので 後は整数だったら 整数(標準4バイト) 最大10桁、-2147483648~2147483647 整数(2バイト) 最大5桁、-32768~32767 整数(8バイト) 最大19桁、-9223372036854775808~9223372036854775807 です。型宣言された変数がこの数値を超えるとオーバーフローです。
- asuca
- ベストアンサー率47% (11786/24626)
ひょっとしてですが表示(出力)の部分もしくは変数がオーバーフローするような値になっている子はありませんか?
補足
すいません,初心者なもので・・・ オーバーフローってなんですか?
補足
ご返答ありがとうございます! その可能性も考えられますね.でも実数のが+++++になっててそれは倍精度で宣言しています. それと,そのtimestepまでは1.0D-8ぐらいの値なのに突如として次のtimestepでは1.0D+308を超えるということはあるのでしょうか? なにか他に考えられることはありませんか? お時間あればお教えください.