write文の書式
サンプルプログラムNo.11 「様々な書式で表示させるプログラム」
write文の書式
- format文を使わずに書式のところに'()'で書いても良い。
普通の教科書では説明されていないが、文番号format文を使うよりは、
便利と私は思っている。
- 「*」は、お任せなので、整えて表示してくれないが、必ず表示してくれる。
- (Fn.m)はn桁を使って、小数点mまで表示する。想定した値を表示するときには、
綺麗に表示されるが、想定外の値が来るとn個の*を表示してしまう。
- (En.m)は、n桁を使って、小数点mまでを指数形式で表示する(指数部で4桁使うので必ずnはm+7以上)。
- (En.m)はなぜか0.xxxExxxとなるので、その際は(1PEn.m)とすれば見慣れている表示となる。
- (In)で整数型変数の表示をn桁でする。(An)または(A)は、文字型変数をn桁または適当に出力する。
- xEn.m、x(1PEn.m)などに前に数字をつけるとそれだけ繰り返すという意味。
- その他いろいろあるので、教科書を参照。但し、懲りすぎてもしょうがないので、
この程度知っていれば十分。
倍精度実数
- 通常のrealは4バイト(有効数字8桁ぐらい)だが、real*8とすると8バイト(有効数字16桁ぐらい)となる。配列のメモリーを使用する大きさが2倍となる。
- 数値計算では倍精度で計算することを強く勧める。通常のPCでは、real*8になると
計算時間が倍になるのだが、単精度のままでは、数値計算では差分を取ることが多く、桁落ちが起こってしまい、計算結果もおかしくなるし、0で割るとか無限大をかけるなどの例外処理が起こりやすく、非常に計算時間がかかってしまう。また、スーパーコンピューターでは、倍精度を前提として計算しているので、単精度だと少しだけ余計に時間がかかる。但し、ファイルに出力する際には、ファイルの大きさが倍になるので、単精度出力させる場合も多い。
- 定数や出力の際には、eの代わりにdを使うことで倍精度を意味するようになる。
演習問題
- 上のサンプルプログラムを適当にいじって、いろいろと試してみよ。
2002年度 fortran 演習
担当教官:山中康裕(galapen@ees.hokudai.ac.jp)・豊田威信(toyota@lowtem.hokudai.ac.jp)