• 締切済み

Fortranのフォーマット

Fortranのフォーマットで、下記のように表示したい場合どうしたらよいのでしょうか?桁落ちしてもかまいません。 実数型(f)で表示した場合、0.が抜けてしまいます。 指数表示はしません。 0.0001 5.4321 1234.5 よろしくお願いします。

みんなの回答

  • wakaranan
  • ベストアンサー率42% (204/481)
回答No.3

一番上の場合だけで記述すると、PRINTしたい変数をABCとして、 CHARACTER*7 CH7 REAL ABC WRITE(CH7,F7.4)ABC IF(ABC.LT.0.0) THEN CH7(1:2)='-0' ELSE CH7(1:2)=' 0' ENDIF WRITE(6,100) CH7 100 FORMAT(1X,A7) たかが、'0'をつけるのにこんな大袈裟なと思いますが、私のプログラミング力(20年前の経験)ではこの程度しか考えつきません。文字型変数でプリントします。はたしてこれで動くのかも自信がないです。悪しからず。

  • info22
  • ベストアンサー率55% (2225/4034)
回答No.2

0.0001 5.4321 1234.5 であれば FORMAT(1X,F7.4/1X,F7.4/1X,F7.1) でいいと思います。 行の先頭の「1X」は改行制御のスペースで 「1H_」(Hの後は半角スペース、表示できないのでアンダーバーで代用)と同じです。

bear-kuma
質問者

補足

ありがとうございます。 やはり0が抜けてしまいます。

  • colder
  • ベストアンサー率43% (30/69)
回答No.1

当方では、0.が抜けるようなことはありませんでした。 使用しているコンパイラ、OS、実際に試した書式を教えて下さい。

bear-kuma
質問者

補足

Microsoft developer studio, Fortran Power station 4.0 です。 例えば -0.1234の時、 -.1234と表示されます。

関連するQ&A

  • FortranのFormatについて

    Fortranで数値を出力するときのFormatについて質問です。 数値を小数点を無くして、指数表示で出力したいです。 例えば 0.0025 を 25E-4 と出力するのが希望です。 調べたところ、 『■pe■.■e■』(■は数値)というFormatにすれば、  1番目の値は小数点以上の桁数  2番目の値は数値が入る幅  3番目の値は小数点以下の幅  4番目の値は指数の桁数 ということがわかりました。 『2PE8.3e1』だと 0.0025 は 25.00E-4 と出力されます。 『2PE6.1e1』だと 0.0025 は 25.E-4 と出力されます。 しかし、この小数点を消す方法がどうしてもわかりません。 『2pe6.0e1』と設定してもうまく出力されません。 詳しい方がいらっしゃったらぜひ教えてください。 よろしくお願いします。

  • fortranでテキストデータ読込できない。教えて下さい。

    fortran95(g95)を使用しています。 以下のようなテキストファイルを読み込みたいのですができません。 a.txtの中身 ------------------------- 0.000000 -11084.0 1.940757E-03 0.000000 -11059.6 6.324515E-04 0.000000 -11035.2 2.825573E-02 0.000000 -11010.7 1.419570E-03 -------------------------- ----と-----の間のデータです。 最初に空白が3つ 次に8桁の実数 次に空白が1つ 次に8桁の実数(マイナス記号含む) 次に空白が2つ 最後に12桁の実数(指数含む) となっています。    real :: z(3,4)   open(1,FILE='a.txt')   do j = 1, 4 read(1,1000,end=99)(z(k,j), k=1,3) enddo 99 continue close(1) 1000 format(F11.6,F9.1,E14.6) 上記のようなコードを作成しています。 do j = 1,4 write(*,*) (z(k,j),k=1,3) enddo 上記のように出力させると 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. となります。 よくわからない。 分かる方、教えて下さい。 お願いします。

  • Fortranの編集記述子

    ファイルフォーマット資料読んでて出てきた「Format(I10,3I5,2(1X,20A1))」の”1X”の意味が知りたいです。Fortran経験ありませんが、検索していろいろ読む限りFortranかな、と思います。 Fortran前提で調べていくとXというのは”桁移動”だと書いてあって、具体的にその移動量が文字数だか何バイトなんだかよくわかりません。 1X”の桁移動によって何バイト(何文字?)確保されるのでしょうか。 古い話なので2バイト文字とか想定していなかったのかもしれませんが、「ここが文字数又はバイト数のいずれで確保されているのか」知りたいです。最終的にはここに2バイト文字が入っていてもいい物かどうか知りたいです。

  • FORTRAN90

    fortran90で、ファイル出力をフォーマット付きで行いたいのですが、 write(unit,****) のような文で、****の部分のフォーマット指定を マニュアルで入力するのではなく、その場に応じた形で 指定する方法はありますでしょうか? character変数の文字にフォーマット指定の文字列、例えば六つの実数を横一列に書き出す場合を想定して write(char,"(A,I1,A)")"'(",Int,"D13.5)'" とし、 write(unit,char)x,y,z,w,s,t などとするのはできませんでした。 ここでいうintの部分を自動的に変えれるようにしたいのですが 何か策はありますでしょうか? わかりにくい説明ですみませんが宜しくおねがいします。

  • Fortranの変数

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

  • fortranでの0.~の表示のしかたについて。

    初歩的なことかもしれませんが、fortranであるプログラムを出力したときに - .123 と出力されます。 そのときのformat文が format(4x,f6.3) なのですが、出力結果を -0.123 と0.~としたいときにはどうすればいいのでしょうか? format文の内容を変えればいいのでしょうか?教えてください。

  • VineでFORTRAN

     「Vine Linux 2.6 r4」を使っています. 「ワークステーション」でインストールしました.  FORTRANで開発をたくて下記のサイトを参考にし「gcc-g77」をインストールしました. しかし,以下のようなエラーが出てしまいます. 何が原因で,どうのように解決すればいいのでしょうか? /usr/bin/ld:program_name.f90:file format not recognized; treating as linker script /usr/bin/ld:program_name.f90l:1:parse error collect2:ld returned lexit status ・参考にしたサイト 初歩的なFORTRANコンパイラ導入ガイド http://www-kn.sp.u-tokai.ac.jp/~inoue/computor/fortran/fortran.html PCの知識レベルとしては「初級シスアド」の資格を持っている程度です. よろしくお願いします.

  • fortranで

    FORTRANを使っているのですが、よくわからないので質問です。 以下のようなデータがあります。 F000 1.001 1.002 1.003 … F001 1.002 1.003 1.004 … F002 1.001 1.002 1.003 … F00xというタイトルが書いていて、その下に数字がいくつも書かれたものです。これが連続して何個も表示されています。 このときに、F00xとその下に書いてある文字郡を一つずつのファイルに書き直したい(例えばF000、F001というように分ける)のですが、どのようにしたら良いかわかるでしょうか?

  • FORTRAN(g95)の話です。

    FORTRAN(g95)の話です。 --------------------------------- program test double precision a a=1234.3456789 write(*,100) a 100 format( ) stop end --------------------------------- 以上のようなプログラムでaの値を正確に最後まで出力するにはどのような format文をかけばよいのでしょうか。E変換、F変換、G変換、D変換と試してみましたが うまく表示されません。 それと出力文字に色をつけるにはどうすればよいのでしょうか。

  • FORTRAN95でハフモデルの計算をしようと思っています。

    FORTRAN95でハフモデルの計算をしようと思っています。 ハフモデルをちょっと拡張して計算を行いたく、なかなかプログラムを組めていません。 一番苦戦しているのが、配列に数字を入れる方法です。 縦5、横9からなる配列Bを定義して、(Bの左上の要素はB11とします) 1列目の2~5行目に1~4の数字を入れ, 1行目の2列目から後ろには1~9を入れて、Bを表示したいです。 ほかの要素は実数なのでBは実数型で定義します。 Bの完成イメージとしては 0 1 2 3 4 5 6 7 8 9 1 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 です。スペース部分はコンマですが。 プログラムを REAL,DIMENSION(5,9)::B B=0 DO I4=1,4 B(2:5,1)=I4 DO IXW=10,80,10 XWEI=REAL(IXW)/10.0 B(1,2:9)=XWEI END DO END DO DO I5=1,5 WRITE(*,100) (B(I5,J5),J5=1,9) 100 FORMAT(20(',',F3.1)) END DO STOP END こうかくと、 ,0.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0, ,4.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, ,4.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, ,4.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, ,4.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, のように表示されます。DO文の対になるEND DOよりしたではDOの最後の値しか使えないようです。 しかし、WRITE文をEND DOより中に入れると5×9ではなくもっと縦長の15×9のような配列が表示されてしまいます。 どなたか教えてください。お願いします。

専門家に質問してみよう