1

我需要从 Fortran 77 程序将大量(> 2000 万)浮点值输出到文本文件。我想保持输出文件尽可能小。因此,我想以紧凑的方式输出浮点数,而不使用二进制。

我知道我需要的精度(通常是小数点右边的两位数),所以在 CI 中会使用printf("%.2f %.2f", val1, val2);Fortran 77 中是否可以使用类似的东西?我发现我必须明确设置字段宽度(如 中format (f8.2,x,f8.2))。当我事先不知道输出数字的范围时,这会浪费大量空间。

如果在 Fortran 77 中不可能,更新的 Fortran 标准是否提供了一种方法来做到这一点?

4

3 回答 3

3

Fortran 2008 标准允许编辑描述符,例如作为f0.2响应,输出是可能的最小字段宽度,它写入数字的整个部分,后跟一个小数点和两个小数位。我认为这是自 Fortran 90 以来语言标准的一部分,可能更长。

于 2013-06-20T10:52:10.170 回答
0

如果您有一个数字 X,那么 INT(LOG10(X))+1 是您的数字的整数部分的大小(整数部分的位数)。因此,您只需为要打印的每个值制作一些自定义格式标签。

它不是很优雅,但我认为它会帮助你实现你想要的。

于 2013-07-15T09:54:52.147 回答
0

我知道这可能会显得迂腐和无益,但请听我说完。听起来你在做糟糕的科学。如果您的仪器吐出从 1000.00 到 0.01 的数字,那么您的仪器可能只精确到百分之一。所以数字 9894.36 应该四舍五入到 9900(没有小数点)。所有其他数字都不重要。为什么这是相关和有用的?因为如果您存储 9894.36,您会浪费存储空间。所以,答案是使用 g 编辑描述符,它以科学计数法输出。然后你所有的号码将占用相同的空间。

于 2013-08-09T23:24:35.333 回答