1

別のプログラムのテキスト出力をフィルタリングして csv 形式に変換する Fortran 90 コードを作成しました。このファイルには、さまざまなタイプ (文字、実数、整数) の列を持つテーブルが含まれています。一般に小数値 (確率値) を含む列があります。BUΤ、一部の行では、値が 10 進数の「1.000」である必要がありますが、値は実際には整数の「1」です。

「F5.3」指定子を使用してこの列を読み取り、テーブルのすべての行に同じフォーマット ステートメントを使用しています。したがって、コードが「1」を見つけると、小数点が見つからないため、「.001」と読み取られます。

他の小数の中から整数を正しく (そして一般的に) 読み取るには、どのような方法を使用できますか? いくつかの「スペース」に対してのみ「フォーマットなし」の入力を指定できますか?

4

3 に答える 3

0

fw.d浮動小数点形式指定 のデータ編集記述子は、通常ゼロで使用する入力用dです(省略不可)。d浮動小数点データがスケーリングされた整数として格納されている場合、または整数値から何らかの単位変換を行う場合、まれに非ゼロが使用されます。

于 2013-04-08T08:01:45.177 に答える
0

リスト指示入力を使用してみることができます: 書式指定子の代わりに * を使用してください。これは、選択されたアイテムではなく、読み取り全体に適用されます。または、行を文字列に読み込んで内容をテストし、読み方を決定することもできます。サブストリングに小数点がある場合: read (string(M:N), '(F5.3)') value. そうでない場合は、別の形式を使用してください。たとえば、 as として読むなどF5.0です。

PS「フォーマットされていない」とは、変換せずにバイナリデータを読み取ることです...これは、ファイルからデータ項目へのデータの直接コピーです。「listed-directed」は、フォーマット指定を使用せずにデータを読み取り、変換することを表す Fortran 用語です。

于 2013-04-07T13:52:18.310 に答える
0

f90 では、カンマとスペースの区切り文字を組み合わせて、単純なリスト指示読み取りを行うことができます。

read(unit,*)v1,v2,v3,v4

入力あり

1.222  2 , 3.14 , 4

収量

1.222000  2.000000 3.140000 4.000000
于 2013-04-08T18:20:57.827 に答える