TVアニメ「ブレンド・S」のWEB施策ビストロスティーレ第12回公開!
アニメ『ブレンド・S』
こんな喫茶店で毎朝コーヒーを飲みたいです。できれば毎日家と喫茶店の往復がいいです。
今回もFORTRANのFORMATの続きで、FORMATの記述子Gです。
Gは、自動で判別して、FまたはEの書式で表示します。
takk@deb9:~$ cat disp.f REAL A A=123.45 WRITE(*,11111) A WRITE(*,22222) A WRITE(*,33333) A WRITE(*,44444) A 11111 FORMAT(G10.5) 22222 FORMAT(g10.4) 33333 FORMAT(g10.3) 44444 FORMAT(g10.2) STOP END takk@deb9:~$
実行結果です。
takk@deb9:~$ gfortran disp.f takk@deb9:~$ ./a.out 123.45 123.4 123. 0.12E+03 takk@deb9:~/gf$
C言語のprintfの書式にも%Gがありますが、素通りしてました。今回初めて意味を知りました。なぜGという文字を使うのかは謎です。
C書式に対応しているprintfコマンドで確認してみます。
takk@deb9:~$ printf "%10.5g\n" 123.45 123.45 takk@deb9:~$
FORTRANのFORMATよりも分かりやすいです。全体を10桁右詰で表示し、仮数部を5桁で表示してますね。
printfを知ってしまったら、FORTRANの方のG10.5の10はいったい何の意味があるのでしょう、と疑問。printfを10.5gから10.2gまでの結果を並べてみてみます。
takk@deb9:~$ printf "%10.5g\n" 123.45 123.45 takk@deb9:~$ printf "%10.4g\n" 123.45 123.4 takk@deb9:~$ printf "%10.3g\n" 123.45 123 takk@deb9:~$ printf "%10.2g\n" 123.45 1.2e+02 takk@deb9:~$
FORTRANのFORMATで 0.12E+03 だったのが、printfでは 1.2e+02 と表示されました。
printfはてっきりFORTRANを参考にしたとばかり思ってましたが、どうなんでしょう。
コメント