我正在使用外部程序来运行模拟,该模拟向我返回包含输出数据的csv文件。我需要将此文件中的数据读入我的fortran程序,该程序分析并优化输入条件以重新运行外部程序。
CSV文件有20列70行。每列包含特定参数的输出数据。既然那个程序不是由我编写的,我就无法控制输出值的精度。因此,在许多情况下,外部程序会截断小数点后的数字,它们为零。因此,在1号运行中,某个字段在小数点后有3位数,但在2号运行号中只有2位数。
我应该为此做些什么?我不能使用read命令,因为我需要提前指定我的程序必须读取的位数。
我基本上需要一种方法让我的程序识别逗号之间的数据,并读取逗号之间的值或不同的精度。
答案 0 :(得分:1)
对于输入,如果输入字段不包含小数点,则仅使用格式说明符的小数部分。
在过去的几十年中(自穿孔卡消亡以来),用户通常期望不包含小数点的数值是整数值。因此,输入的,实数的格式规范应始终为小数部分.0
。
例如,在:
之后CHARACTER(4) :: input
REAL :: a, b
input = '1 '
READ (input, "(F4.0)") a
READ (input, "(F4.1)") b
a
的值为1.0,b
的值为0.1。
(对于输入,使用哪个特定的实数据描述符(F,E,D或G)并不特别重要 - 无论输入的性质如何,它们都表现相同。)
因此,对于输入,您只需要担心的是正确的字段宽度。一旦你将一条记录读入一个字符串,这很容易通过使用INDEX内在函数来完成。