Input Fortran 90:如何正确读取其他实数中的整数

Input Fortran 90:如何正确读取其他实数中的整数,input,format,fortran,fortran90,Input,Format,Fortran,Fortran90,我已经创建了一个Fortran 90代码来过滤和转换csv格式的另一个程序的文本输出。该文件包含一个表,其中包含各种类型的列(字符、实数、整数)。有一列通常包含十进制值(概率值)BUT,在某些行中,值应为十进制“1.000”,实际值为整数“1”。 我使用“F5.3”说明符来读取此列,并且表的每一行都有相同的format语句。因此,当代码找到“1”时,它将读取“.001”,因为它找不到小数点 我可以用什么方法正确(通常)读取其他小数中的整数? 是否可以仅为多个“空格”指定“未格式化”输入?您可以尝

我已经创建了一个Fortran 90代码来过滤和转换csv格式的另一个程序的文本输出。该文件包含一个表,其中包含各种类型的列(字符、实数、整数)。有一列通常包含十进制值(概率值)BUT,在某些行中,值应为十进制“1.000”,实际值为整数“1”。

我使用“F5.3”说明符来读取此列,并且表的每一行都有相同的format语句。因此,当代码找到“1”时,它将读取“.001”,因为它找不到小数点

我可以用什么方法正确(通常)读取其他小数中的整数?
是否可以仅为多个“空格”指定“未格式化”输入?

您可以尝试使用列表定向输入:使用*而不是格式说明符。这将用于整个已读项目,而不是所选项目。或者,您可以将这些行读入字符串,测试它们的内容,以决定如何读取它们。如果子字符串有小数点:
读取(字符串(M:N),“(F5.3)”值
。如果没有,请使用不同的格式,例如,可能读为
F5.0


“未格式化”是指在不进行转换的情况下读取二进制数据。。。它是数据从文件到数据项的直接副本。“列出的定向”是Fortran术语,用于在不使用格式规范的情况下读取和转换数据。

浮点格式规范的数据编辑描述符
fw.d
用于通常与零
d
一起使用的输入(不能使用)。非零
d
用于浮点数据存储为缩放整数,或从整数值进行单位转换的罕见情况。

我有一个新发现:f90允许混合使用逗号和空格分隔符进行简单的列表定向读取:

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

1.222  2 , 3.14 , 4
屈服

1.222000  2.000000 3.140000 4.000000

@MakisH如果您需要帮助拉出这些子字符串,您应该这样说,您的问题是您是否已经这样做了。。和read(string(m:n),*)值应该可以正常工作。我认为这不是一种“优雅”的方式。我还需要其他列中的字符串和值。不过,非常感谢您的回答!:-数据在
fw.d
描述符中很少需要指定非零的
d
。这是最好的答案!我不认为显而易见的。。。请将其作为答案发布。这里有一个潜在的危险——w必须大于逗号之间的总字段宽度。如果您碰巧有一个带有额外空格或额外小数的杂散字段,您将为该字段读取多个(垃圾)值。(我想应该使用f1000.0)